恶意代码分析——基础技术篇

2023-11-15

恶意代码分析目的

  • 获取特征码
  • 撰写分析报告
  • 制作专杀工具

恶意代码分析方法

在这里插入图片描述
静态分析基础技术(快速分析技术):检查可执行文件但不查看具体指令的一些技术。静态分析基础技术可以确认一个文件是否是恶意的,提供有关其功能的信息,有时还会提供一些信息让我们生成简单网络特征码。
动态分析基础技术:涉及运行恶意代码并观察系统上的行为,以移除感染,产生有效的检测特征码,或者两者。
静态分析高级技术:主要是对恶意代码内部机制的逆向工程,通过可执行文件装载到反汇编器中,查看程序指令来发现恶意代码做了什么。
动态分析高级技术:使用调试器来检查一个恶意可执行程序运行时刻的内部状态。

恶意代码种类

  • 后门:恶意代码将自身安装到一台计算机来允许攻击者访问。后门程序能让攻击者很少甚至无需认证即可连接到远程计算机上在本地系统执行命令。
  • 僵尸网络:指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。
  • 下载器:这是一类仅用于下载恶意代码到本地上的恶意代码。
  • 间谍软件:一种能够在用户不知情的情况下,在其电脑上安装后门、收集用户信息发生给攻击者的软件。
  • 启动器:用于启动恶意代码程序的恶意代码,具有隐蔽性。
  • 内核套件:用来隐藏恶意代码的工具。通常与其他恶意代码(如后门)组合成套装,来允许攻击者远程访问并很难被受害用户发现。
  • 勒索软件:攻击者通过锁屏、加密文件等方式劫持用户资产或资源以此向用户敲诈钱财的一种恶意软件。
  • 蠕虫或计算机病毒:可以自我复制和感染其他计算机的恶意代码。

恶意代码静态分析

环境

虚拟机!!!

在线反病毒引擎

我们在分析一个可疑的恶意代码样本时,第一步最好用多个反病毒软件对该样本进行扫描,看是否有引擎能识别它。
常用在线杀毒:VirSCAN、VIRSTOTAL
注意!在线杀毒适用于该恶意代码样本敏感度不高情况下使用。

获取哈希值(certutil-hanshfile path MD5)

哈希值又称恶意代码的指纹,恶意代码样本通过哈希程序会产生一段用于标识这个样本的独特哈希值。
在虚拟机中执行!
获取哈希值方法之一:MD5算法或者SHA-1算法
如:使用免费下载的md5deep程序计算windows操作系统自带solitaire程序哈希值

输入命令:md5deep solitaire程序路径

获取哈希值方法之二:用系统命令获取样本的md5

输入命令:certutil -hashfile 路径/file.exe MD5

注意!有时命令执行不了,可能是该虚拟机还没有此命令。

查找字符串hive string ida火绒剑

从字符串中搜索是获得程序功能提示的一种简单方法。
基本知识

  • 字节byte:8位
  • 字word:两字节,16位
  • 双字dword:四字节,32位
  • 八字节qword:八字节,64位
    使用strings程序查找字符串
    1.先到官网下载安装strings程序!
    2.然后使用命令将恶意代码里的字符串提前出来
输入命令:strings程序路径 恶意代码路径

3.将得到结果右键-标记-从头拖到尾-回车-粘贴到新建文本里
4.对文本里的字符串进行分析哪些很有可能是恶意代码
如:名字很长的域名(正常域名一般都很短),数字串(可能是含恶意代码的ip地址),错误信息提示(可提供一些有用信息)!

加壳&查壳

攻击者常常使用加壳或混淆技术将恶意代码隐藏。

文件加壳

后续会更新详细加壳与脱壳技术

使用PEiD检测加壳

PEiD可以用来检测加壳器的类型或用来链接应用程序的编译器类型。
使用方法:直接将恶意代码样本拖进来即可
如:
在这里插入图片描述
紫色框里便是该恶意代码样本加壳使用的软件版本号,但也有可能是假冒的哟。
下载PE编辑器PEditor:查看恶意代码样本的区段和日期时间标志,点击日期时间标志计算器——复制该标志到下边的解码,可看见该样本建立时间,判断其是否正确。

导入导出函数

下载PE编辑器PEditor:查看恶意代码样本的区段、目录里的导入表、导出表。
查看动态链接库里面的函数,分析该恶意代码可以会做的举动。
如:为了将程序以服务方式运行,即恶意代码会作为服务的一部分运行,必须定义ServiceMain函数。
注意!有时普通程序员在实现必要功能时可能也会这样起名哟,所以不一定这样判别是完全正确的。

获取资源信息

1.用PEditor打开恶意代码样本——点击目录——点击资源的… ——点击BIN——点击右下角的十六进制编辑器查看,若里面是个PE文件即为可执行程序——之后我们点击BIN下的101——点击右下角保存。
2.再用PEditor打开保存的文件——点击日期时间标志计算器——复制该标志到下边的解码即可得到正确时间
3.点击目录——查看导入表的函数,判断其功能
可放到IDA程序再深入分析

常见的DLL程序

  • Kernel32.dll:包含核心系统功能,如:访问和操作内存、文件和硬件等等;
  • Advapi32.dll:提供对核心windows组件的访问,比如:服务管理器和注册表;
  • User32.dll:包含所有用户界面组件,如:按钮、滚动条和控制和响应用户操作的组件;
  • Gdi32.dll:包含图形显示和操作的函数;
  • Ntdll.dll:是Windows内核的接口,可执行文件通常不直接导入这个函数,一般通过Kernel32.dll间接导入,若导入即是企图使用一些不正常提供给windows程序使用的函数。
  • Wsock32.dll和Ws2_32.dll:均是联网dll,访问其中任一个dll的程序非常可能连接网络,或是执行网络相关的任务。
  • Winint.dll:这个DLL包含了更高层次的网络函数,实现了如FTP、HTTP和NTP等协议。

恶意代码动态分析

环境

虚拟机!!!

在线沙箱

沙箱:一种在安全环境里运行不信任程序的安全机制,不用担心伤害到“真正“的系统。它包含一个虚拟环境,通过某种方式模拟网络服务,以确保被测试的软件或恶意代码能正常运行。
微步云沙箱
将恶意代码上传即可得到分析报告,可以下载恶意代码样本。
报告一般有分析摘要、文件活动、互斥量创建、注册表、网络行为和virustotal结构等。
ps:这部分内容之后可能会单独出详细学习笔记

运行恶意代码

恶意代码可以运行起来,我们的动态分析基础技术才有用哟。我们知道通常下运行一个恶意代码很简单只要双击或者命令行即可,但要运行一个恶意的dll很麻烦,因为windoes系统不知道如何自动执行它,接下来提供一个办法。
因为所有windows版本都含有rundll32.exe程序,他能给运行dll提供一个平台

输入命令:rundll32.exe 恶意代码样本路径, installA

install就像是启动dll的一个入口。
这样就可以用rundll32启动该恶意代码。
注意!还有其他命令也可以运行dll

进程监控器

进程监控器:windows系统的高级监视工具,提供一种方式来监控注册表、文件系统、网络、进程和线程行为。

进程监控器的查看

进程监控器的可配置栏里有事件序列号、时间戳、引发事件的进程名、事件操作、事件使用的路径、事件结果等。

  • 其中事件操作栏可以告诉你该程序在系统上做了什么操作!
    在这里插入图片描述

进程监控器中的过滤

因为监控器里的事件很多,设置指定过滤可以更快速找到目标。
设置过滤器:选择filter——打开过滤菜单栏——通过左上角的下拉菜单栏Reset按钮上面选择一栏——选择一个比较器——选择在过滤器里是保留还是取消。
注意!排除procmon.exe和pagefile日志记录,因为它们经常被访问且没有提供有用信息。

  • 当我们选择一个过滤器,单击Add添加每一个规则,然后单击Apply。在得到的记录中分析该程序操作了上面。
  • 过滤器仅仅用于显示过滤,所以当恶意代码释放另一个可执行程序并运行时,这些信息也会被记录。因此当看到有其释放其他程序时,要改变过滤器的设置以显示释放程序的名字,再单击Apply,与释放恶意程序相关事件就会被显示。
    注册表:通过检查注册表操作,能辨别一个恶意程序是怎样把自己添加到注册表中注册的。
    文件系统:检查文件系统能显示恶意程序创建的所有文件,或它使用的配置文件。
    进程行为:检查进程行为能告诉我们恶意程序是否启动了其他进程。
    网络:识别网络连接能向我们展示恶意程序监听的任意端口。

进程浏览器Process Explorer

这是微软的免费产品,一款强大的任务管理器,是进行动态分析的必备工具。它能让使用者了解看不到的在后台执行的处理程序,可以使用它方便地管理你的程序进程。 能监视,挂起,重启,强行终止任何程序,包括系统级别的不允许随便终止的关键进程和十分隐蔽的顽固木马。

进程浏览器的显示

软件运行界面:
在这里插入图片描述
鼠标左键点击上图箭头所指图标不放开,然后移动到要查看的窗口上,即可看到该窗口的详细进程信息。
进程浏览器监控系统上执行的程序以树状结构显示,可以看到:services.exe是wininit.exe的子程序:

在这里插入图片描述

  • 红框显示六栏:Process(进程名)、CPU(cpu使用率)、PID(进程号)、Description(进程描述)等等。
  • 视图每秒更新一次,默认情况下显示,服务为粉色、进程为蓝色、新进程为绿色、被终止进程为红色。其中绿色和红色执行是是亮亮的,当进程完全启动或终止后就会改变。
  • 当双击一个进程名时,属性窗口就会打开,里面会有分析恶意代码有用信息。线程标签threads显示所有活跃线程,TCP/IP显示活跃的连接和进程监听端口,镜像标签显示磁盘上可执行程序路径。
  • 镜像标签里的验证按钮Verify可以验证磁盘上的镜像文件是否有微软的签名认证。这对验证磁盘上windows文件有没有被破坏尤其有用,因为恶意代码常常替换windows认证文件且试图隐藏。注意!该验证针对的是磁盘上而不是内存里,因此可能会失效。

比较字符串

用来识别进程替换的方法。
步骤:使用进程属性窗口的字符串( Strings )标签,通过比较包含在磁盘上可执行文件的学符串与内存中同一个可执行文件的字符串,来看两者是否同。用左下角的单选按钮在这两个字符串视图间切换。如果这两个学符串列表有很大不同,那么可能就发生了进程替换!
经过分析提取到特征码,打开wirshark并进入命令提示符输入运行dll命令及net start IPRIP命令启动服务,观察wirshark(记得暂停观察)里是否有可疑数据包

这是我学习《恶意代码分析实战》的笔记,这本书很多干货,喜欢分析代码的推荐大家去看哟~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

恶意代码分析——基础技术篇 的相关文章

  • 第三篇:更新异常与规范化设计

    前言 在前两篇中 主要讲了ER建模和关系建模 在具体分析如何用数据库管理软件RDBMS Relational Database Management System 实现这些关系前 我想有必要思考下面这个问题 为什么要这么麻烦 为什么又是ER
  • C# List去掉某个位置的元素

    在 C 中 可以使用 RemoveAt 方法从 List 中删除指定位置的元素 这个方法接受一个整数参数 表示要删除的元素的索引 以下是一些示例代码 展示如何使用 RemoveAt 方法从 List 中删除指定位置的元素 创建一个包含一些元
  • Reactor模式

    Reactor是一种设计模式 可以用于构建高并发的网络服务器 Reactor模式的好处在于 可以在一个或多个reactor线程使用多路复用技术去管理所有网络连接连接建立 IO请求 保证工作线程不被IO阻塞 前置知识 IO多路复用技术 1 传
  • php zhegnze_php 正则表达式

    最近在写bbs中 遇上代码转换问题 寻找了很久 才得到一个比较完善的解决办法 可以彻底还原发文者的原文 以下贴出 供大家指正 系统 linux php4 oracle8i 标题 名字等字段入库处理 去首尾空格 function trans
  • AI代码生成插件推荐

    文章目录 前言 一 AI代码生成插件推荐 一 copilot 建议 个人不太推荐使用这个因为他收费了 二 codegeex 个人推荐 推荐使用这个 免费还不错 总结 AI代码生成可以有效的提高开发的效率

随机推荐

  • Windows磁盘管理

    0x01 磁盘管理概述 磁盘管理是一项计算机使用时的常规任务 它是以一组磁盘管理应用程序的形式提供给用户的 他们位于计算机管理控制台中 它包括查错程序和磁盘碎片整理程序以及磁盘整理程序 来源百度百科 本文主要介绍的内容为磁盘整理程序中的分区
  • 学成在线笔记+踩坑(0)——面试问题

    导航 黑马Java笔记 踩坑汇总 JavaSE JavaWeb SSM SpringBoot 瑞吉外卖 SpringCloud 黑马旅游 谷粒商城 学成在线 牛客面试题 目录 介绍你的项目 项目难点 CDN是什么 负载均衡是怎么做的 git
  • 【迎五一】超大福利来啦,众多精美课程、礼品等你来领

    C认证助力程序员 五一特惠活动来啦 单人报名可免费获得 电子书月卡 一份 组团报名皆可获得技术图书一本 无限次补考机会 带新用户报名皆可获得技术图书一本 精品网课 活动时间 4月26日 5月15日 心动不如行动 点击文末卡片立即了解 CSD
  • 哈希的应用 -- 布隆过滤器与海量数据处理

    文章目录 布隆过滤器概念 布隆过滤器设计思路 布隆过滤器的应用 布隆过滤器模拟实现 布隆过滤器的基本框架 布隆过滤器的插入 布隆过滤器的探测 布隆过滤器的删除 布隆过滤器优点 布隆过滤器缺陷 布隆过滤器模拟实现代码及测试代码 海量数据处理
  • 【云原生之Docker实战】使用Docker部署个人FireflyIII财务系统

    云原生之Docker实战 使用Docker部署个人FireflyIII财务系统 一 FireflyIII介绍 1 FireflyIII简介 2 FireflyIII特点 二 检查本地环境 1 检查系统版本 2 检查docker版本 3 检查
  • 数据可视化各个图表

    阶梯图 import pandas as pd from matplotlib import pyplot as plt postage pd read csv r http datasets flowingdata com us post
  • 请说说接口和抽象类的区别?

    1 从使用目的来看 接口只是一个类间的协议 它并没有规定怎么去实现 抽象类可以重用你代码使你的代码更加简洁 2 从行为来看 接口可以多继承 multi implement 抽象类不能实例化 必须子类化才能实例化 3 从属性来看 接口的属性必
  • VOSviewer

    1 文献下载 按需求搜索 wos一次只能导出500条文献信息 如果相关文献过多 可以按被引排序 导出 制表符分隔文件 全记录与引用的参考文献 2 可视化实现 打开VOSviewer软件 单击左区Map下的create 选择 create a
  • 计算机页面设置代码,计算机二级考试Access辅导:页面设置模块代码分享

    Dim up dn le ri si liAs Single co As string 定义边距及页面函数 Sub ymszmk strName As String 页面设置模块On Error GoTo Err ymszmkIf Nz D
  • 【软件测试】如何在笔试中设计一个好的测试用例

    测试用例的重要性 如何以最少的人力 资源投入 在最短的时间内完成测试 发现软件系统的缺陷 保证软件的优良品质 则是软件公司探索和追求的目标 软件测试是有组织性 步骤性和计划性的 为了能将软件测试的行为转换为可管理的 具体量化的模式 需要创建
  • DNS介绍,哪个好,速度快稳定

    介绍 打个比方 你电脑是你家 你家地址是一个IP 你要拜访百度的家 那肯定要知道百度家在哪里 你知道baidu com 但是电脑访问的是网络地址 是数字 其它的他都不认识 百度家IP是220 181 38 148 但是你记不住 你电脑也不知
  • el-dialog弹出层扩展拖拽及拉伸以及双击全屏

    import Vue from vue 使用方法 将以下代码复制到一个js文件中 然后在入口文件main js中import引入即可 给elementUI的dialog上加上 v dialogDrag 指令就可以实现弹窗的全屏和拉伸了 给d
  • Python之虚拟环境venv实战详解

    目录 简介 虚拟环境实战 创建虚拟环境 激活虚拟环境 虚拟环境测试 停止虚拟环境 小结 简介 Python 应用程序通常会使用不属于标准库的包和模块 应用程序有时需要特定版本的库 因为应用程序可能需要修复特定的错误 或者应用程序可能使用库接
  • 我与边缘计算 - [Jetson Xavier] - [浪潮边缘主机环境拓荒]

    目录 目的 过程 1 opencv 2 darknet 3 TensorRT 附录1 blas lapack cblas在Ubuntu上的安装 1 确保机器上安装了gfortran编译器 如果没有安装的话 可以使用 2 下载blas cbl
  • 日常小记,待转语雀

    java中的fast fail机制 r1 12king 博客园概念 fail fast 机制是java集合 Collection 中的一种错误机制 当多个线程对同一个集合的内容进行操作时 就可能会产生fail fast事件 分析 先看一个代
  • 如何在IDEA中创建一个项目

    首先双击IDEAjava运行环境 也就是双击程序啦 点击Create New Project 开始创建一个新的项目 然后点击下一步 next 然后作为小白 不需要勾选下面选项 接着下一步即可 多动动手啦 然后就是给项目名命 名命完以后直接F
  • C++ 多线程编程

    转自 C 标准线程库之共享资源 1 带普通互斥锁的多线程案例 include
  • 4.5创建型模式—————建造者模式(Bulider模式)

    在软件开发过程中有时需要创建一个复杂的对象 这个复杂对象通常由多个子部件按一定的步骤组合而成 例如 计算机是由 OPU 主板 内存 硬盘 显卡 机箱 显示器 键盘 鼠标等部件组装而成的 采购员不可能自己去组装计算机 而是将计算机的配置要求告
  • iOS快捷指令:执行Python脚本(利用iSH Shell)

    文章目录 前言 核心逻辑 配置iSH 安装Python 创建Python脚本 配置启动文件 测试效果 快捷指令 前言 iOS快捷指令所能做的操作极为有限 假如快捷指令能运行Python程序 那么可操作空间就瞬间变大了 iSH是一款免费的iO
  • 恶意代码分析——基础技术篇

    文章目录 恶意代码分析目的 恶意代码分析方法 恶意代码种类 恶意代码静态分析 环境 在线反病毒引擎 获取哈希值 certutil hanshfile path MD5 查找字符串hive string ida火绒剑 加壳 查壳 文件加壳 使