精华内容
下载资源
问答
  • 二进制静态分析工具
    2022-06-13 00:59:09

    科恩二进制文件自动化静态漏洞检测工具

    腾讯科恩实验室前阵子出了一个二进制静态漏洞检测工具,专注于二进制漏洞扫描,先mark一下,后面写篇文章。

    参考文献

    “精”准把握静态分析|科恩二进制文件自动化静态漏洞检测工具正式开源 | 腾讯科恩实验室官方博客
    GitHub - KeenSecurityLab/BinAbsInspector: BinAbsInspector: Vulnerability Scanner for Binarieshttps://dl.acm.org/doi/pdf/10.1145/1749608.1749612
     

    更多相关内容
  • BinSkim二进制分析仪该存储库包含BinSkim的源代码,BinSkim是便携式可执行文件(PE)轻型扫描程序,用于验证编译器/链接器设置和其他与安全性相关的二进制特征。对于开发人员分叉存储库- 加载并编译src\BinSkim.sln...
  • Pharos静态二进制分析框架 Pharos静态二进制分析框架是卡内基梅隆大学软件工程学院的一个项目。... 由于发布此代码的主要目的是使我们的研究透明,并促进与其他二进制静态分析研究人员的对话,请随时与Cor
  • 腾讯安全科恩实验室为提升静态分析二进制文件漏洞检测领域效率和可扩展性,科恩孵化并开源二进制文件静态漏洞分析工具BinAbsInspector项目。

    说明

    腾讯安全科恩实验室为提升静态分析在二进制文件漏洞检测领域效率和可扩展性,科恩孵化并开源二进制文件静态漏洞分析工具BinAbsInspector项目。

    与同类静态分析工具相比,有显著优势。

    “精”准把握静态分析|科恩二进制文件自动化静态漏洞检测工具正式开源 | 腾讯科恩实验室官方博客

    那就安装起来使用吧。

    1.Ghidra安装

    BinAbsInspector是作为Ghidra的插件开发的,因此,首先需要安装Ghidra。Ghidra是主流的逆向分析软件,和IDA齐名。

    Ghidra下载地址是

    Releases · NationalSecurityAgency/ghidra · GitHub

    为了和BinAbsInspector的版本兼容,这里选择Ghidra10.1.2的压缩包ghidra_10.1.2_PUBLIC_20220125.zip下载。

    解压后,执行ghidraRun.bat,可以启动Ghidra。(这里的前提是安装有jdk,显然我们大多人早就安装过了)

    2. Z3 library安装

    Z3下载地址是

    Releases · Z3Prover/z3 · GitHub

    因为我是64位wins机器,所有选择z3-4.8.17-x64-win.zip下载放到我的D:\softwaretmp目录下。

    解压压缩包后 找到z3.exe所在目录是 D:\softwaretmp\z3-4.8.17-x64-win\z3-4.8.17-x64-win\bin。

    将该目录添加到系统环境变量中。

    3.BinAbsInspector作为插件导入

    下载BinAbsInspector地址

    Releases · KeenSecurityLab/BinAbsInspector · GitHub

    下载压缩包

    ghidra_10.1.2_PUBLIC_20220420_BinAbsInspector.zip

    将压缩包拷贝到 D:\softwaretmp\ghidra_10.1.2_PUBLIC_20220125\ghidra_10.1.2_PUBLIC\Extensions\Ghidra目录下。该目录里的文件格式均是 ghidra_10.1.2_PUBLIC_2022*.zip。

     点击file->install extension,选择执行插件安装

     

    4. Ghidra导入BinAbsInspector

     Ghidra新建项目,import被测二进制文件。打开 windows->script manager, 点击Analysis,可以找到BinAbsInspector,双击,选择默认,然后就可以开始检测了。

     

    检测很快一会儿就看到结果。

     

     

     接下来我们就开始分析检测结果了!

     

    展开全文
  • 原标题:BinCAT:一款可整合进IDA的二进制静态代码分析工具包今天给大家介绍的是一款代码静态分析工具,该工具支持IDA,并且能够进行污点分析以及类型重构。 BinCAT是什么?BinCAT是一款静态二进制代码分析工具包,...

    原标题:BinCAT:一款可整合进IDA的二进制静态代码分析工具包

    今天给大家介绍的是一款代码静态分析工具,该工具支持IDA,并且能够进行污点分析以及类型重构。

    BinCAT是什么?

    BinCAT是一款静态二进制代码分析工具包,它可以整合进IDA Pro,并能够给逆向工程师的代码分析活动提供有效的帮助。

    功能介绍

    -值分析(寄存器+内存)

    -污点分析

    -类型重构

    -前向以及后向分析运行演示

    感兴趣的同学可以点击下列视频了解BinCAT的运行演示:

    基本分析功能:【视频地址】

    使用数据污点:【视频地址】

    详细使用教程:【传送门】

    参考文档:【传送门】

    支持的主机平台

    -IDA插件:v6.9及其之后版本(BinCAT使用PyQt,而非PySide)

    -分析器(本地或远程):Linux,Windows,macOS(未测试)

    支持的CPU(目前)

    -x86-32

    -ARMv7

    -ARMv8

    工具安装 分析器

    分析器可以在本地安装,或通过Web服务进行安装。

    Windows平台下的程序代码中已包含分析器:【下载地址】

    在Linux平台下,你可以使用Docker【下载地址】或手动进行安装【手册】。

    IDA插件

    仅支持IDA v6.9及更高版本

    Windows平台下的安装步骤:

    -解压BinCAT

    -在IDA中,点击“文件”->“脚本文件”(或按下ALT+F7)

    -选择windows_install.py

    -BinCAT将会安装在IDA的用户目录下

    如果你想手动安装的话,请参考【安装手册】。

    Linux平台下的安装

    【安装手册】

    使用BinCAT

    1. 使用组合键Ctrl+Shift+B或进入Edit -> Plugins -> BinCAT菜单

    2. 在IDA界面中选择操作指令,然后按下Ctrl+Shift+A组合键,或进入BinCAT -> Analyze from here菜单。

    工具配置

    你可以通过Edit/BinCAT/Options菜单来进行全局配置。

    默认配置和选项存储在$IDAUSR/idabincat/conf之中。

    执行分析并观察结果

    1. 通过组合键Ctrl + Shift + B加载BinCAT插件

    2. 在IDA中打开get_key_x86可执行程序

    3. 在IDA View-A试图中,按下g键进入地址0x93B

    4. 使用组合键Ctrl + Shift + A开启分析窗口

    5. 确保分析器的配置已设置为(new)

    6. 检查Save configuration to IDB选项

    7. 检查Remap binary选项

    8. 点击Edit analyzer config按钮

    9. 将下列内容复制到[state]区域的结尾,重写已存在的stack初始化(stack[0x1000*8192]…):

    stack[0x1000*4099] = |00|?0xFF stack[0x2004] = 5 stack[0x2008] = 0x200000 mem[0x200000] = 0x300100 mem[0x200004] = 0x300140 mem[0x200008] = 0x300180 mem[0x20000C] = 0x3001C0 mem[0x200010] = 0x300200 mem[0x300100] = |6c6f6c3300| mem[0x300140] = |636f6d70616e7900| mem[0x300180] = |64657000| mem[0x3001C0] = |6c6f6c3100| mem[0x300200] = |6c6f6c2100|

    10.点击“Save”

    11. 点击“Start”

    12.选择结果代码的存储位置,该操作只需要首次分析时配置即可

    13.给需要存储的配置文件命名

    14.分析完成后,按下g键进入地址0×807,在BinCAT Registers视图中观察gsp寄存器的值(应该为0x1D50)。打开BinCAT Memory视图,观察buffer指针(char *)的内容。

    更多内容

    更多的使用方法请大家参考BinCAT提供的【入门教程】。

    * 参考来源:bincat,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM返回搜狐,查看更多

    责任编辑:

    展开全文
  • 二进制程序分析 工具简介

    千次阅读 2021-10-02 19:34:48
    静态分析方法—查壳工具die 静态分析方法—PE结构工具Cff 静态分析方法—ELF结构处理命令readelf 静态分析方法—ELF结构处理命令ldd 静态分析方法—PE/ELF/DEX结构处理工具010editor 静态分析方法—Restorator ...

    目录

    介绍

    静态分析

    静态分析方法—Virus Total

    静态分析方法—字符串分析

    静态分析方法—查壳工具die

    静态分析方法—PE结构工具Cff

    静态分析方法—ELF结构处理命令readelf

    静态分析方法—ELF结构处理命令ldd

    静态分析方法—PE/ELF/DEX结构处理工具010editor

    静态分析方法—Restorator

    静态分析方法—逆向篇(IDA)

    静态分析方法—逆向篇(Ghidra)

    动态分析

    行为分析方法—Process Monitor

    行为分析方法—Strace

    行为分析方法—Process Explorer

    网络分析方法—Wireshark

    网络分析方法—iNetSim/FakeNet-NG

    沙箱分析—Cuckoo

    动态分析方法—初识调试器

    动态分析方法—符号访问

    动态分析方法—去混淆

    动态分析方法—打补丁

    动态分析方法—创建规则(Misp & Yara)

    总结


    介绍

    分析恶意软件的第一步是收集二进制程序在主机上执行的行为事件,研究人员根据这些行为大体形成一个思路来描述恶意软件的功能。

    这包含应用释放或者从互联网下下载的文件,写入什么样的注册表、访问了什么网络地址,修改读写本地的什么文件等等。那么研究人员通过行为会确定恶意样本的类型。通常类型如下:

    后门:没有通过合法身份验证的方式链接到目标计算机的通道。

    僵尸网路:采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒。

    勒索软件:通过骚扰、恐吓甚至采用绑架用户文件等方式,使用户数据资产或计算资源无法正常使用,并以此为条件向用户勒索钱财。

    下载者:自动下载病毒的程序。

    间谍软件:键盘记录器,截图信息记录等工具。

    Rootkit:启发式病毒,操作系统、内核层面的病毒隐藏、执行的方案。

    恐吓软件:恐吓用户安装恶意程序。

    蠕虫:无须计算机使用者干预即可运行的独立程序,它通过不停的获得网络中存在漏洞的计算机上的部分或全部控制权来进行传播。

    无文件病毒:在内存中执行的病毒,并不使用文件作为载体。

    APT:高级可持续攻击。

    静态分析

    静态恶意软件分析是指在不运行PE/ELF文件的情况下对其进行分析。首先通过分析PE/ELF头结构,其中提供了操作系统加载和执行文件的有价值的信息(例如支持的系统版本、内存布局、动态链接库、静态链接库、导出和导入表、资源和线程数据等等)。

    研究员需要初步通过恶意文件的功能、证书、编译日期等基本信息来确认文件是否为恶意文件。然后创建控制流分析恶意文件的逻辑进行进一步的调查。与高级静态分析相比,这种分析对于混淆加固的样本是无效的。

    我们下面将介绍用于执行静态恶意软件分析的不同工具和方法。

    静态分析方法—Virus Total

    将样本上传到VirusTotal,引擎会与各种反病毒程序的检测结果进行交叉比对,产生综合报告。同时还提供文件的信息,如SHA256, MD5,文件大小,签名信息,导入导出表等。

    1631692554_6141a70a6f719fcf9702e.png!small?1631692556703

    静态分析方法—字符串分析

    从二进制文件中提取可读的Ascii和Unicode字符。但并不是所有找到的字符串都会被程序使用,黑客会使用虚假字符串来扰乱取证,研究人员需要辨明那些是有用的字符串。

    利用XSearch搜索字符串。利用grep -rn/strings命令搜索字符串。利用IDA、apktools等特别工具搜索字符串。

    1631692571_6141a71b7500f6aad1515.png!small?1631692573756

    1631692575_6141a71fe228aba89fe2a.png!small?1631692578207

    当然如果需要去混淆、降噪等操作。推荐flare-floss:

    https://github.com/fireeye/flare-floss

    静态分析方法—查壳工具die

    “DIE”是一个跨平台的应用程序,除Windows版本外,还有适用于Linux和Mac OS的可用版本。许多此类程序(PEID,PE工具)允许使用第三方签名。不幸的是,这些签名只能通过预设掩码扫描字节。

    Detect It Easy完全开放签名架构。可以轻松添加自己的算法来检测或修改已存在的算法。这是通过使用脚本来实现的。脚本语言与JavaScript非常相似,任何了解编程基础知识的人都会很容易理解它的工作原理。可能有人可能会决定脚本工作非常缓慢。

    事实上,脚本运行速度比编译代码慢,但是,由于脚本引擎的良好优化,这不会造成任何特别的不便。开放式架构的可能性弥补了这些限制。目前该程序定义了以下类型:

    MSDOS可执行文件MS-DOS

    PE可执行文件Windows

    ELF可执行文件Linux

    MACH可执行文件Mac OS

    文本文件

    二进制文件

    1631692611_6141a7436c9bc1f07892f.png!small?1631692613840

    静态分析方法—PE结构工具Cff

    CFF Explorer是一款优秀的PE资源工具,使用CFF Explorer可以方便地查看和编辑PE(EXE/DLL)资源,类似PE资源工具有eXeScope、ResHacker等。比如下图分析到文件的unix时间。

    1631692627_6141a753c32fe00df8522.png!small?1631692630325

    我们也可以通过分析段的标题,来判断文件是否存在加壳现象(类似die)。我们排除常规名称(.text .data .rsrc等),剩下的,例如本例UPX1。我们可以判断文件通过UPX加壳的。

    静态分析方法—ELF结构处理命令readelf

    readelf命令,一般用于查看ELF格式的文件信息。选项 -h(elf header),显示elf文件开始的文件头信息。

    1631692643_6141a763b3db7a02e51a4.png!small?1631692645892

    选项 -l(program headers),segments 显示程序头(段头)信息(如果有数据的话)。

    1631692732_6141a7bcd4a3ab62f109a.png!small?1631692735205

    选项 -S(section headers),sections 显示节头信息(如果有数据的话)。

    1631692742_6141a7c63ec4dc596819f.png!small?1631692744685

    选项 -s,symbols 显示符号表段中的项

    1631692754_6141a7d26fba910f227bc.png!small?1631692757186

    选项 -d,dynamic 显示动态段的信息。

    1631692764_6141a7dcb5fc115857948.png!small?1631692767116

    静态分析方法—ELF结构处理命令ldd

    ldd的作用是打印可执行档依赖的共享库文件。

    1631692778_6141a7eabf1fb0b9077db.png!small?1631692780959

    静态分析方法—PE/ELF/DEX结构处理工具010editor

    点击Templates选项--Online Template Repository下载指定格式的模板

    按F5,即使用对应的模板查看

    1631692795_6141a7fb4fbe9f5c3b661.png!small?1631692797896

    静态分析方法—Restorator

    Restorator 主要用于察看、反汇编和修改 Windows 32/64 位可执行的资源。

    1631692836_6141a8249b0bb8b6f2084.png!small?1631692838906

    静态分析方法—逆向篇(IDA)

    反汇编可以对可执行文件综合理解,并了解其运作机制。工具会以汇编代码、伪代码的形式展现程序,并自动分析理解函数执行过程,甚至可以展示出代码执行流程。

    使用IDA进行恶意软件分析可以单步谨慎的分析程序执行事件,熟练及了解系统原理的情况下,并不会感染主机本身。而IDA的调试功能,强烈建议研究人员在独立的虚拟化系统中执行。

    IDA在基本视图中显示汇编代码(地址、指令、参数和注释)或以逻辑流程图的形式绘制汇编代码。逻辑的划分基本上基于跳转、条件和循环。逻辑块之间的关系用箭头表示。图形视图仅对完整函数识别的情况下可用。通过按空格键可以改变视图。

    1631692873_6141a8496697ee188a67e.png!small?1631692875641

    在IDA中打开可执行文件后,第一步是熟悉可执行文件的基本属性——字符串、函数、导入、导出表、name。所有的都可以在菜单'视图' > '打开子视图' > '字符串'(函数,导入,导出和name他们在同一位置)

    1631692882_6141a852ab85ebf53c32e.png!small?1631692884984

    字符串:在可执行文件中出现的字符串(文本)表示列表,可以帮助更好地理解恶意样本的内容,例如IP地址、URL域名以及网络api行为。

    导入函数:从外部链接库加载并且样本文件使用的API函数列表。API函数是一种被与定义的代码,程序无需在其代码中实现即可调用它。观察导入函数列表中,可以确定可执行文件如何与操作系统、资源(文件系统、注册表、网络、加密等)之间交互的关键点。

    导出函数:样本文件提供给外部环境的函数列表。其他程序可以调用和执行。恶意程序对外提供的方法在这里可以被发现。

    函数:可执行程序中包含的所有函数的列表。IDA识别标准库函数。

    在分析恶意样本的过程中,通常建议重点关注网络、加解密和文件操作。例如,对导入函数' InternetConnectA '的步骤:

    双击(或单击并按ENTER)程序视图转向到该引入函数声明的地址。

    单击函数名并按“x”(或右键单击>“跳转到xref“),显示一个包含所有引用该函数的表。

    双击将视图切换到具有InternetConnectA功能的代码段,分析上下文。(如图)

    1631692903_6141a867a85be6f380a30.png!small?1631692906041

    “InternetConnectA”通过CALL访问。根据微软提供的官方文档,“InternetConnectA”功能有8个参数。每个参数是通过PUSH指令按顺序分配给函数的。IDA能够识别已知函数的参数,并通过注释标记它们,这有助于分析人员更好地定位代码并理解代码。如上图所示(图D),参数由' PUSH '指令以相反的顺序将参数推入堆栈——' dwContext '(函数的第八个参数)成为被推入的第一个参数。

    相反,' hInternet '(函数的第一个参数)被推为最后一个参数,这是由于CPU的制式决定的。参数' dwService '决定了服务的类型:' nServerPort '中的值50h表示使用标准TCP端口80(50的十六进制等于 80的十进制);'szServerName'的内容为' C2.malware.info ',这就是黑客服务器的域名。

    人工分析代码分析是一个非常缓慢的过程,建议不要从一开始就逐个指令地分析整个代码。更好的方法是识别有价值的代码块(基于字符串、导入和函数),回溯上下文并彻底分析它们。

    通过使用IDA插件,可以容易地扩展IDA功能。编写插件也是为了自动化分析工作,插件可以用c++、python编写。插件可以完全访问IDA数据库(idb),可以检查或修改(patch)程序或使用读写功能。付费扩展插件(例如hexx - rays反编译器),可以F5一键将汇编代码编译成伪代码。最广泛使用的插件是IDAPython,它支持用Python为IDA编写自定义脚本。

    静态分析方法—逆向篇(Ghidra)

    Ghidra是由美国国家安全局(NSA)研究部门开发的软件逆向工程(SRE)套件,用于支持网络安全任务。

    1631692918_6141a8767eac0a3fe773a.png!small?1631692920796

    A - 菜单 B - 段 C - 符号目录 D - 汇编 E - 反汇编

    对于安全研究人员来说,能够显示类似于流程图(代码块、分支、条件等)的代码结构的图形解释,能够更好地理解代码执行流程及算法。使用功能,需要点击位于主面板中的“显示功能图”图标”。

    1631692934_6141a886f06ceee532398.png!small?1631692937217

    Ghidra通过其强大的反编译器超越了IDA免费版本。虽然IDA也提供了反编译器功能,但这只包含在其商业版本中,并作为需要支付额外费用。

    反编译器将汇编代码转换为高级编程语言,代码结构良好,算法的逻辑更加明显。这大大减少了分析工作的时间。当鼠标移动到汇编代码或C代码时,光标会在两个窗口中同时用绿色高亮显示相同的代码部分,如图所示。

    1631692950_6141a896e5d181dfd75ed.png!small?1631692953189

    1631692954_6141a89a1c8cd564233a2.png!small?1631692956331

    动态分析

    与静态分析不同,动态恶意程序分析发生在代码运行时。我们建议使用虚拟化的环境来进行动态分析的过程。进一步,逆向工程师需要了解不同架构、制式、语言的指令调试方法(调试器)才能真正的搞清楚恶意程序的原理。

    行为分析方法—Process Monitor

    使用Process Monitor可以对系统中的任何文件和注册表操作同时进行监视和记录,通过注册表和文件读写的变化,对于帮助诊断系统故障或是发现恶意软件、病毒或木马来说,非常有用。

    该软件具有针对微软操作系统产品的行为监视、捕获和过滤多个工件的能力,具体如下:

    监视进程和线程的启动和退出,包括退出状态代码

    监视映像 (DLL 和内核模式驱动程序) 加载

    捕获更多输入输出参数操作

    非破坏性的过滤器允许你自行定义而不会丢失任何捕获的数据

    捕获每一个线程操作的堆栈,使得可以在许多情况下识别一个操作的根源

    可靠捕获进程详细信息,包括映像路径、命令行、完整性、用户和会话ID等等

    完全可以自定义任何事件的属性列

    过滤器可以设置为任何数据条件,包括未在当前视图中显示的

    高级的日志机制,可记录上千万的事件,数GB的日志数据

    进程树工具显示所有进程的关系

    原生的日志格式,可将所有数据信息保存,让另一个 Process Monitor 实例加载

    进程悬停提示,可方便的查看进程信息

    详细的悬停提示信息让你方便的查看列中不能完整显示的信息

    在下图中,使用Process Monitor过滤功能并应用样本名称为malware.exe的过滤器,分析人员执行样本后根据其引起的事件得到结论。

    1631692975_6141a8af606313f7ef9c0.png!small?1631692977911

    本例检查事件之后,分析人员了解了恶意程序试图做过的恶意行为。在下图中,可执行程序“malware.exe”正在读取注册表项、创建文件和启动网络连接。

    检查恶意软件在主机中的行为,会对研究人员回溯病毒的来源、传播有重大好处。然后研究人员在进行IDA静态恶意软件逆向分析。

    1631692983_6141a8b74df047ddce40a.png!small?1631692985663

    当你有多个事件要处理时,合适配置过滤器是非常重要的,微软官方提供了过滤器Malware.pmf,它预制了基本易懂的过滤选项。

    1631692991_6141a8bf28cdd2c0af00a.png!small?1631692993515

    行为分析方法—Strace

    strace是一个可用于诊断、调试和教学的Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。在运维的日常工作中,故障处理和问题诊断是个主要的内容,也是必备的技能。strace作为一种动态跟踪工具,能够帮助运维高效地定位进程和服务故障。它像是一个侦探,通过系统调用的蛛丝马迹,告诉你异常的真相。

    1631693002_6141a8caca94714f4db0d.png!small?1631693005232

    strace可以监控大多数系统调用、参数信息、返回值信息等。研究人员可以通过这种调用获取到恶意程序中有效的行为信息,并加以判断。

    行为分析方法—Process Explorer

    Process Explorer是一个功能强大的进程管理工具,用于监控正在运行的进程。运行的进程以树状结构显示,该结构显示子进程和父进程的关系等等。进程资源管理器图形界面和颜色代码如下所示:

    1631693017_6141a8d925d4972d78b98.png!small?1631693019622

    Process Explorer特点:

    默认的树视图显示进程之间的层次关系;

    精确的进程CPU使用率;

    可以添加托盘图标来监控CPU,磁盘,GPU,网络等;

    识别哪个进程加载了DLL文件;

    识别进程中的窗口信息;

    识别任何进程中的其他信息,包括线程,内存使用,句柄,对象等等;

    可以杀死整个进程树;

    可以挂起一个进程,冻结它的线程;

    为了快速查看系统和正在运行的进程,Process Explorer提供了一个选项,允许分析人员通过比对VirusTotal上的HASH值。例,在下图中,用户可以看到进程名“malware.exe”(它是“explorer.exe”的子进程)在70个检测中存在61个风险,表明该应用程序很有可能是恶意的。

    查看属性窗口(用户双击打开),可以提供另一组有用的信息,例如,进程在哪个用户下运行的、内存中的字符串、线程、恶意软件正在发起的活动网络连接和可执行文件在磁盘上的完整路径等等。

    1631693027_6141a8e3dda372742f6d8.png!small?1631693030320

    网络分析方法—Wireshark

    网络流量分析是恶意软件分析的关键。查看网络流量,分析人员可以发现哪些文件正在被窃取,C2服务器与恶意软件是如何通信的,等等。

    Wireshark是目前应用最广泛的网络协议分析程序之一,它可以从指定的网卡抓取网络报文,也可以加载之前记录的抓包文件显示网络流量。

    在虚拟机上部署Wireshark或其他抓包软件,带有检测机制的恶意软件(见:动态分析方法-打补丁)能够检测到它正在被监视,紧接着隐藏其行为。因此,我们经常选择在默认网关上运行Wireshark。此外,可以在交换机上设置SPAN端口,以发送在受害虚拟机端口上看到的所有网络数据包的流量副本。

    1631693042_6141a8f21b4ff7483c656.png!small?1631693044323

    Wireshark选择可用的协议列表。恶意软件通信的协议可以被选择,流量可以被捕获。也可以设置协议过滤,以避免大样本分析时造成的噪点问题。

    1631693053_6141a8fd44bb795ffc3a2.png!small?1631693057762

    Wireshark从病毒分析的角度保留有用的统计数据。使用Statistics选项卡列出全部连接会话。终端列表允许使用数据包的传输数量对IP进行排序,对话列表可以根据终端之间传输的字节数和它们的数据交换持续时间进行排序。这些信息可用于分析异常的网络行为。

    1631693117_6141a93d08e8a1f6e479b.png!small?1631693119487

    Wireshark中设置显示过滤器有助于区分数据包。过滤选项种类繁多,有简单的协议过滤器,如HTTP、DNS、FTP等,有可编程可自定义的过滤器。下图示例显示了一组可疑IP地址的HTTP流量,包含字符串' exe '。您只需单击“File - Export Objects - HTTP”就可以保存这些可疑的文件。通过对象列表,可以导出和保存流量中的所有对象。

    1631693127_6141a9470623d9863a26f.png!small?1631693129241

    1631693131_6141a94b30beb7c292b8f.png!small?1631693133523

    Wireshark可以方便地查看有关主机的所有详细信息、在网络流量中传输的文件、证书等。甚至还有单独的DNS查询和会话列表,可以根据需要进行过滤。

    1631693138_6141a952e4f4c27686724.png!small?1631693141321

    网络分析方法—iNetSim/FakeNet-NG

    INetSim是一个基于linux的工具,分析师可以监控恶意软件样本的网络行为,无需将其连接到互联网上。

    1631693152_6141a960d15e4cb084ef8.png!small?1631693155037

    1631693157_6141a965280034fe0a253.png!small?1631693159486

    运行该工具后,左图像显示了INetSim模拟的所有服务,包括它们的默认端口。为了改变工具添加或删除服务的配置设置,用户必须修改文件“etc/inetsim/inetsim.conf”。在运行时,INetSim记录所有入站/出站连接。虽然INetSim目前仍然是许多分析师的首选工具,但随着FakeNet-NG的兴起,分析师又多了一个用于恶意软件分析的跨平台工具,FakeNet-NG可以直接与所有在安全领域不断出现的基于Python的信息工具进行集成。

    沙箱分析—Cuckoo

    测试的过程中需要限制样本的影响,研究人员在沙箱解决方案中运行恶意软件样本。沙箱工具通常提供内存转储分析功能,因此可以更好地了解内存中发生的情况。

    黑客知道,如果他们的恶意软件样本在虚拟机或沙盒中运行,病毒样本会被轻易的执行、行为检测或者自动化的逆向分析出来,黑客会选择自我保护、伪装。其实黑客与安全研究人员的沙箱之间的攻防战争,从来没有结束过。

    互联网上有多种免费的沙箱解决方案,研究人员可以在上传样本并等待报告。其中最有名的是:

    malwr.com 

    hybridanalysis.com

    any.run

    joesandbox.com

    cuckoosandbox.org

    sandbox.anlyz.io

    analyze.intezer.com

    threatbook.cn

    Cuckoo沙箱被称为安全圈领先的开源自动恶意软件分析系统。研究人员可以自动分析Windows、macOS、Linux或Android下的任何恶意文件。沙箱可以在本地部署,并且需要一台主机(管理终端)和多个沙箱客户端(分析用虚拟机),客户端数量取决于样本数量以及服务器性能。Cuckoo沙箱的特点:

    保留已删除文件、记录

    转储恶意程序进程的内存

    在多机器上并发运行分析

    以PCAP格式存储生成的网络流量

    递归监控新生成的进程

    追踪相关的API进行行为分析

    获取虚拟机的全内存转储镜像

    让我们看一下cuckoo的系统架构:

    1631693185_6141a9810c4105d783bab.png!small?1631693187270

    其模块化设计,Cuckoo可以作为一个独立的应用程序使用,也可以集成到更大的框架中。可以通过web控制台访问,web控制台如下图所示:

    1631693193_6141a989bf69841424979.png!small?1631693195993

    在使用web控制台将文件提交到沙箱之后,样本会被执行,所有的活动都被记录下来,并包含在最终的报告中。研究人员可以通过web控制台访问报告。Cuckoo沙箱有几种报告格式,包括普通格式、MAEC(恶意软件属性枚举和特征)格式。

    动态分析方法—初识调试器

    调试器看起来很像反汇编程序:两者都以汇编方式显示已检查样本的代码,并提供类似的函数、字符串等列表。不同之处在于,调试器提供了对恶意代码动态监视的能力,对内存、寄存器、堆栈进行深入调查。调试的好处是有机会运行代码、实时中断,并查看寄存器中的特定值、函数的参数及其返回值,有助于更好地理解代码。开源调试器:WinDbg, x64dbg,gdb,adb。

    当在IDA中分析可疑样本时,' internettwritefile ' API有' 0x004010D5 '和' 0x004010E4 '两处调用,该函数通过网络发送数据。函数的参数定义了目的链接(' hFile '),要发送的数据(' lpBuffer '),要发送的数据的长度(' dwnumberofbyteswrite ')。很明显,地址为' 0x004010E4 '的函数发送了' \n '字符。但是之前的0x004010D5发送了什么我们并不知道。

    1631693205_6141a99595d5ab30f85b6.png!small?1631693207854

    这时候就需要动态调试。在x64dbg中打开可执行文件后,在地址' 0x004010D5 '(在IDA中找到,函数被调用的地址)设置一个断点:

    右键单击代码区域,选择“Go to”>“Expression”(或按CTRL+G)。

    在对话框中填写地址,然后单击OK。

    右键单击> ' breakpoint ' > ' Toggle '(或按F2)设置所需地址的断点。

    断点的地址用红色突出显示。

    1631693232_6141a9b0ea177cf8ebccd.png!small?1631693236021

    然后按F9(或菜单' Debug ' > ' run ')启用调试器来运行样本文件。调试器到达断点并停止。' internettwritefile '发送的数据现在可以在堆栈区域中看到。在程序执行期间,与网络和文件操作相关的API函数很有可能被多次调用(一个循环传输多个数据包,一个循环处理多个文件,一个文件的一行,等等)。

    1631693243_6141a9bb422678dea6061.png!small

    动态分析方法—符号访问

    在前面的示例中,敏感函数的地址是已知的,这告诉我们必须在哪里设置断点。如果地址未知,则必须对函数及其交叉引用进行调查,x64dbg为此提供了内置特性:符号和模块间调用。

    要查看符号列表(被导入的外部函数),切换到“symbols”栏,并从所有模块中选择有用函数名(或按CTRL+N)。

    1631693264_6141a9d04e0248b7ed65e.png!small?1631693266573

    通过右击> '搜索' > '当前模块' > ' Intermodular calls '会出现一个表,其中包含如何调用(“汇编”列)、在哪里调用(“地址”列)以及调用什么导入函数(“目标”列)的信息。可以通过按F2来中断调用,在代码区域中可以通过双击它们进行切换。同样可以分析字符串出现的位置(在' CPU ' > '右键点击搜索' > '当前模块' > '字符串引用')

    1631693273_6141a9d95a6dab2c829e1.png!small?1631693276776

    动态分析方法—去混淆

    调试器还有助于处理混淆的、未编译的脚本。下面的例子展示了一个模糊的jsp脚本' malware.js '的分析。这个脚本共有10页长,手动消除混淆是很困难的。

    1631693285_6141a9e54ed9b353dfc3e.png!small?1631693287727

    jsp文件需要由脚本解释器执行。Windows有本地脚本引擎' wscript.exe ',位于' C:\Windows\System32\ '目录下。这种混淆的恶意javascript脚本基本用于下载病毒并执行它。我们虽然不能确定具体恶意行为,但它最可能的最终目的就是试图在操作系统中执行任意命令,因此模块' shell32.dll '(例如,函数' ShellExecute ')需要被监控。

    从调试器的角度来看,这意味着加载' wscript.exe ',让' wscript.exe '来处理恶意的javascript文件,在' ShellExecute '设置断点,并在触发时分析其上下文:

    加载' wscript.exe ' (' File ' > ' Open ' > ' C:\windows\system32\wscript.exe ')。

    添加' malware.js '作为参数(' File ' > ' Change Command Line '并添加恶意文件的路径;例如”C:\Windows\system32\wscript.exe” C:\malware.js 。

    切换到Breakpoints (面板>右键单击> ' Add dll breakpoint ‘)并填写 shell32.dll 。

    执行并等待直到' shell32.dll '断点被触发(如果触发,意味着DLL及其符号被加载)。

    切换到“Symbols”面板 > 在模块中选择“shell32.dll” > 过滤“Execute”函数并断点。

    切换回“断点”面板,并从步骤4禁用DLL断点(否则所有与DLL连接的操作都将被断点,而不仅仅是需要手动断点的功能)。

    运行并等待一个' Execute '断点被触发,以检查堆栈内存中的参数

    1631693295_6141a9ef7e96ac84015a9.png!small?1631693298294

    其中一个断点在' ShellExecuteExA '函数中触发。该函数只有一个参数——指向“SHELLEXECUTEINFOA”结构的指针。要检查它,右键单击指针值> ' Follow DWORD in Dump ' > ' Dump 1 '。结构的第五项是要执行的文件。在' Dump 1 '区域> '中右键单击它,在Dump ' > ' Dump 2 '中跟随DWORD,并通过右键单击> ' Text ' > ' Extended ASCII '调整格式。

    本例中,js执行了命令,启动powershell脚本,从http://jblecsywt6925.cc/documents/下载文件' spy20.exe ',保存为' temp.exe '并执行。

    1631693307_6141a9fb64d0496756bc0.png!small?1631693310265

    动态分析方法—打补丁

    恶意程序使用特别的保护机制来防止被逆向。包括:反调试,虚拟化环境检测,收集用户网络行为,代码混淆,代码加解密等。如果恶意软件检测到上述情况,它可以自行终止或改变其执行逻辑,以防被研究人员回溯。

    研究人员可以通过打补丁来绕过这些检测机制,并将其保存为一个新的可执行文件,可以在不受检测机制影响的情况下进行分析。

    案例:病毒防调试的一种方法,执行并判断函数‘ IsDebuggerPresent ’的返回值,恶意软件测试它是否在调试器存在的情况下运行。关闭防御机制的操作步骤如下:

    1)在模块间调用中确定' IsDebuggerPresent '函数的位置(右键单击> '搜索' > '当前模块' > '模块间调用')并双击它。

    在这个例子中,如果函数' IsDebuggerPresent '(位于' 0x0040111E '地址)返回Boolean型 ' true '(这意味着可执行文件正在调试器中运行),则函数' exit '(位于' 0x0040112A '地址)被调用,将终止其进程。绕过这个安全检查,只需将' exit '函数调用和之前的' PUSH 1 '指令重写为' nop ',如下所示。' nop '指令的目的是CPU不做任何操作(nop = no operation)。

    2)在要替换的行上做标记并按空格键(或 ' Assemble '行上右击)。

    3)将出现一个带有原始指令的窗口。用必需的指令(在本例中是' nop ')重写原始指令,然后单击OK。

    对所有要修改的行重复步骤3 、4。

    4)完成所有修改后,按“CTRL + P”(或右键单击>“Patches”)。

    5)将展示一个包含所有被更改的内容的窗口。点击“Patch File”并将其保存为新文件。

    1631693323_6141aa0b06705e7145e67.png!small?1631693325522

    动态分析方法—创建规则(Misp & Yara)

    Yara规则基于文本或二进制模式创建。每个规则包含一组字符串描述和一个确逻辑表达式。在某些情况下,字符串描述的部分可以省略,但逻辑表达式条件的部分是必要的。

    以下是一个Yara规则的案例:

    在左边的例子中,当所有二进制文件都包含文本字符串' malwaredomaine.com '或以下十六进制字符串' A2 24 ?? D8 23 FB ',将触发名为' FirstYaraRule '的Yara规则。十六进制字符串内的问号表示通配符(未知且可以匹配任何内容的字节)。用于Yara扫描的测试样本可以到如下链接下载:https://github.com/virustotal/yara/releases/tag/v4.0.0

    1631693336_6141aa18ca64c6c628281.png!small?1631693338991

    执行扫描时使用的语法如下: 参考 Running YARA from the command-line — yara 3.4.0 documentation

    yara [OPTIONS] RULES_FILE TARGET

    除了创建自己的一套Yara规则外,研究员还可以从第三方查看以下一个Yara规则资源:

    Florian Roth repository:signature-base/yara at master · Neo23x0/signature-base · GitHub

    GNU-GPLv2: GitHub - Yara-Rules/rules: Repository of yara rules

    awesone-yara:https:https//github.com/InQuest/awesome-yara 

    所有编写的Yara规则,都可以上传、使用,然后在MISP平台上共享。

    MISP是一个开源的威胁情报平台,被各大组织使用。研究员可以将接触到的规则添加到他自己的MISP实例中,并根据数据库中已经存储的其他事件的数据,得出相关性匹配。下图根据MISP平台上传的事件与数据库中的其他事件进行了关联。

    1631693347_6141aa23ddfb1a31ad77f.png!small

    通过MISP平台共享信息的措施非常重要,最重要的是可以排除已被分析的样本。

    关于MISP平台的更多信息可以在以下网站找到:

    MISP - Open Source Threat Intelligence Platform & Open Standards For Threat Information Sharing (formely known as Malware Information Sharing Platform)

    总结

    本手册涵盖了许多工具及其用法。有些工具具有非常相似的功能,还存在手册中没有列出的其他替代方案,这就需要读者的见仁见智了。

    静态代码分析是一个非常耗时的过程,建议将它与动态代码分析结合使用,以提高效率。最理想的方法是从基本的静态和行为分析开始,然后收集前两个阶段的结论继续进行组合(静态和动态)代码分析。进行逆向分析时,研究人员必须建立一个与工作/家庭网络物理隔离的虚拟化环境,以避免损失。

    恶意二进制软件分析的结果可以作为安全事件进一步调查取证的输入物,也可以结合自身的沙箱、网络防火墙等等,补充其薄弱的规则,以防止未来发生相同或类似的攻击。

    展开全文
  • 全功能的二进制文件分析工具 Radare2

    千次阅读 2021-02-18 09:56:21
    Radare2 是一个为二进制分析定制的开源工具。有大量(非原生的)Linux工具可用于二进制分析,为什么要选择 Radare2 呢? 为什么我需要另一个工具? 如果现有的 Linux 原生工具也能做类似的事情,你自然会问为...
  • 利用angr进行二进制静态分析

    千次阅读 2017-11-15 11:00:54
    angr是一个二进制代码分析工具,能够自动化完成二进制文件的分析,并找出漏洞。angr基于python,它将以前多种分析技术集成进来,­­­它能够进行动态的符号执行分析,也能够进行多种静态分析。本文以介绍angr的基本...
  • 本文介绍一个二进制静态漏洞检测工具cwe_checker的基本使用方法。其开源于:https://github.com/fkie-cad/cwe_checker 他的安装和使用方式都很简单。 安装 使用docker安装,拉取他的镜像 docker pull fkiecad/cwe_...
  • BinCAT 一个直接从IDA进行静态二进制代码分析工具包,旨在帮助进逆向工程师
  • 在计算机安全与黑客攻防领域,CTF挑战经常以竞赛形式进行,目标是分析并利用指定的二进制文件,或者正在运行的进程/服务器,直至拿到隐藏在二进制文件中的“flag”为止。flag一般是十六进制的字符串,你可以用它来...
  • 用于高效二进制级别覆盖率分析工具。 bcov在没有编译器支持的情况下静态地检测x86-64 ELF二进制文件。它具有探针修剪,精确的CFG分析和复杂的仪器技术的功能。我们总结了本研究在2分钟预告片。 资源 有关详细信息...
  • Xori是一个自动化的反汇编和静态分析库,它使用shellcode或PE二进制文件并提供分类分析数据。体系结构:I386 X86-64文件格式PE,PE + 普通的shellcode目前的特点1.输出json格式结果2.反汇编函数3.支持导入。管理图像...
  • BinCAT是静态二进制代码分析工具包,旨在直接从IDA或使用Python自动化来帮助逆向工程师。 它具有以下功能:价值分析(寄存器和内存)简介什么是BinCAT?BinCAT是静态二进制代码分析工具包,旨在直接从IDA或使用...
  • cwe_checker 注意:最近,我们将默认分析后端从BAP更改为较新的Ghidra后端。 该开关会在命令行界面和docker映像界面... cwe_checker使用将二进制文件分解为一个常见的中间表示形式,并在此IR上执行自己的分析。 因此,
  • 具有自定义补丁的支持静态分析 用于单元测试 用户界面的 进行漂亮的印刷拆卸 的Ubuntu sudo ./install_deps.sh ./make.sh OS X brew update && brew install cmake boost protobuf git ./install_vex.sh ./make.sh...
  • HotS解压缩是用于HotS游戏二进制文件的静态解压缩器。 它以一个加密的二进制文件作为输入,并创建一个解密的二进制文件作为输出。 输出二进制文件不可运行,而仅用于分析目的。 调整入口点可能会使二进制文件可运行...
  • Linux提供了丰富的工具集,可轻松进行二进制分析! 无论您的工作角色是什么,如果您在Linux上工作,了解有关这些工具的基础知识将有助于您更好地了解系统。 在本文中,我们将介绍这些Linux工具和命令中最流行的一些...
  • iOS 二进制文件分析之常用命令

    千次阅读 2020-12-03 09:18:43
    iOS 二进制文件分析之常用命令 一、背景介绍 最近新版本审核时被拒了,Apple给出的原因是使用到了Intents的功能,但是Info.plist中并未给出使用简介导致被拒。由于我们的App并不需要使用Intents等能力,所以...
  • 什么是angr:angr是一个二进制代码分析工具,能够自动化完成二进制文件的分析,并找出漏洞。在二进制代码中寻找并且利用漏洞是一项非常具有挑战性的工作,它的挑战性主要在于人工很难直观的看出二进制代码中的数据...
  • 二进制及代码分析工具

    千次阅读 2019-09-20 15:39:37
    二进制及代码分析工具: 吾爱破解论坛【爱盘】3.0 在线破解工具包https://github.com/ganlvtech/down_52pojie_cn Angrhttp://angr.io/ BAPhttps://github.com/BinaryAnalysisPlatform/bap Binary Ninjahttps://...
  • 关于Linux常用的二进制文件分析方法

    千次阅读 2021-05-09 03:13:13
    当你在unix下拿到一个二进制文件但不知道它是什么的时候,可以通过以下方法得到一此提示1、 最首先应该尝试strings命令,比如拿到一个叫cr1的二进制文件,可以:$ strings cr1 | more里面可能会有一些对于这个cr1的描述,...
  • 二进制插桩与DTA

    2022-05-19 22:09:05
    所谓插桩,其实就是在二进制程序指定位置(指令,函数)插入监控代码,类似hook,静态二进制插桩(Static Binary Instrumentation,SBI,反汇编,会修改磁盘文件)和动态二进制插桩(Dynamic Binary Instrumentation...
  • 在使用它们之前,必须先将其编译为包含计算机可运行的机器语言的二进制可执行文件。但是,你如何知道编译后的程序与高级源代码是否具有相同的语义?令人不安的答案是你无法知道! 高级语言和二进制机器语言之间存在...
  • 本篇开始阅读学习《有趣的二进制:软件安全与逆向分析》,本章是通过逆向工程学习如何读懂二进制代码,主要是体验软件分析、静态分析和动态分析(可以理解为怕劝退读者)
  • 来看看这个集成框架在二进制代码分析的CTF中解决过哪些问题吧,下面是git中列举的解决过的CTF赛题: 其中,HackCon 2016 – angry-reverser花费31 min,SecurityFest 2016 – fairlight花费20s,Defcamp CTF ...
  • Glasgo静态分析工具 该项目的官方存储库已移至 项目 这是用Go for Go代码编写的静态分析工具。它将发现安全性和一些可能对安全性有影响的正确性问题。 编译中 要编译该工具,请确保首先拥有Go编译器。 使用Go build...
  • 静态分析:不运行目标程序,分析代码 动态分析:运行时分析 静态分析: 1、阅读反汇编代码 2、提取可执行文件中的字符串,分析使用了哪些单词 3、二进制编辑器查看可执行文件内容 作者认为的逆向工程四大件: 二进制...
  • 常用的反汇编工具一般需要执行三个步骤,1,加载要反汇编的二进制文件;2,从二进制文件中找到所有机器指令;3,将指令转换为汇编语句;通常第2步是一个难点,由于机器指令与通常的二进制数值无异,因此很容易把不是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 73,341
精华内容 29,336
热门标签
关键字:

二进制静态分析工具