吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 1411|回复: 7

[转载技术] [系统安全] Windows逆向必备知识、逆向分析小实战

[复制链接] 出处:CSDN
WolfKing 发表于 2022-11-23 12:24 | 显示全部楼层 |阅读模式

本帖最后由 就叫东子吧 于 2022-11-23 12:52 编辑

文章目录:

    • 函数调用约定
    • Windows API匈牙利表示法
    • Windows注册表
    • 组件对象模型COM
    • 逆向分析小实战—Lab 7-3
    • 基础静态分析
    • 基础动态分析
    • 高级静态分析
    • 逆向分析总结


    函数调用约定 fakename.png
    注意:函数调用约定是编译器的事情,即在把C源码编译成汇编代码时考虑;而如果只关注源码的话,除了在函数前声明使用哪种约定外,没有任何差别。

    Windows API匈牙利表示法

    Windows总体上使用匈牙利表达法作为API函数标识符。这个表达式使用一个前缀命名模式来使识别一个变量的类型更为容易。包含一个32位无符号整数的变量,或DWORD,会以dw开头。

    常见API前缀

    fakename.png


    Windows注册表 fakename.png
    同时还可以通过.reg文件的注册表脚本来修改。
    fakename.png
    组件对象模型COM组件对象模型(Component Object Model,COM) 是基于Windows 平台的一套组件对象接口标准,由一组构造规范和组件对象库组成。组件对象不使用方法而用接口来描述自身。接口实质是一组函数指针表,每个指针必须初始化指向某个具体的函数体。
    COM对象通过他们的全局唯一标识符(GUID)来进行访问,这个全局唯一标识符分为两类,是类型标识符(CLSID)和接口标识符(IID)。
    COM类通过CLSID的GUID来标识,接口通过IID的GUID来标识。
    通过这两个标识符来指定使用哪个类的哪个接口来实现功能,在此之前先要用这两个标识符来调用CoCreateInstance函数来完成初始化工作。
    逆向分析小实战—Lab 7-3基础静态分析
    strings64.exe Lab07-03.exe查看字符串,发现以下内容。

    CloseHandle
    UnmapViewOfFile
    IsBadReadPtr
    MapViewOfFile
    CreateFileMappingA
    CreateFileA
    FindClose
    FindNextFileA
    FindFirstFileA
    CopyFileA
    KERNEL32.dll
    kerne132.dll
    kernel32.dll
    C:\windows\system32\kerne132.dll
    Lab07-03.dll
    C:\Windows\System32\Kernel32.dll
    WARNING_THIS_WILL_DESTROY_YOUR_MACHINE




    根据函数名FindNextFileA、FindFirstFileA可以猜测这个exe文件可能会在一个目录中搜索文件。
    CopyFileA、CreateFileA表示程序可能会拷贝和创建文件。
    MapViewOfFile表示可能会把文件映射到内存中并进行拷贝。
    还有两个很类似的dll动态库名,猜测程序的目的可能是用自己伪造的dll来替换windows自带的Kernel32.dll,以此达到隐藏的目的。




    depends查看exe文件的导入表,并没有发现导入了Lab07-03.dll。
    fakename.png


    对Lab07-03.dll用string查看字符串


    exec
    sleep
    hello
    127.26.152.13
    CloseHandle
    Sleep
    CreateProcessA
    CreateMutexA
    OpenMutexA
    KERNEL32.dll
    WS2_32.dll
    strncmp
    free


    看到有ip字符串,表示程序可能会联网。同时CreateProcessA表示程序会创建新的进程。OpenMutexA表示程序会用到互斥量,用来控制同一时刻只能有一个恶意程序在运行


    通过IDA发现这个dll并没有什么导出符号,这一点很奇怪。

    fakename.png


    基础动态分析直接双击运行程序后,apateDNS没有发现网络行为,但是Regshot发现了有修改注册表的行为,又好像这些修改跟这个软件没有什么关系,看不太懂。
    fakename.png


    高级静态分析
    先分析dll文件,导入IDA。
    通过图形话窗口看到这个dll里面的东西还是很多的,为了简略查看功能,搜索所有的call字符如下所示。

    fakename.png



    大多数函数在上面分析过了,这里先来到connect函数的位置。
    fakename.png
    判断是链接的127.26.152.13的80端口,接着往下看。


    fakename.png

    在创建一个新进程后,send了一个hello字符串。
    根据下面的图示可以看到这个新的进程发送完hello后会收到一些数据。
    根据recv收到的数据和一些字符串进行比较,进行下一步操作,是sleep还是exec还是q。



    fakename.png


    可以看到如果是exec,会调用创建进程函数
    fakename.png


    第二个参数lpCommandLine是有关创建进程的一些信息,查看这个变量。
    根据负值可以判断是在当前函数的栈上申请的变量,同时距离buf变量5个字节,而buf又是recv来的数据,可以得出结论recv的数据是exec xxxx的形式。

    fakename.png


    到此知道这个DLL实现了后门功能,这允许攻击者通过发送回复给80端口上的一个数据包,来启动一个系统上的可执行文件。但依旧有一个疑问是这个dll没有导出符号。


    接下来分析exe文件
    mian函数一开始判断了命令格式,必须是两个字符串,并且规定了第二个字符串是什么。这就是为什么刚才双击后没有什么反应。
    fakename.png


    到此判断出执行程序的命令行为Lab07-03.exe WARNING_THIS_WILL_DESTROY_YOUR_MACHINE

    继续往下,看到打开了两个dll,一个是Kernel32.dll,另一个就是刚才分析的dll。


    fakename.png


    接下来是一些数据的处理,通过F5查看反汇编代码也能看出是对数据的处理。


    fakename.png

    fakename.png


    这部分代码调用了sub_401040和sub_401070两个函数,书上说是在计算偏移地址等。

    最后到了结尾部分,看到CloseHandle等函数,关闭了两个文件后把Lab07-03.dll拷贝到kerne1.dll(注意这里是1)。


    fakename.png


    接着又传参调用了sub_4011E0函数,把C:\\*作为第一个参数传进去

    fakename.png

    导函数里看,刚才第一个字符串参数被标记为lpFileName。

    fakename.png

    这个函数第一步就开始FindFirstFile,然后是一些不调用任何函数的操作,先不管这些代码。再往后有一个malloc和call sub_4011E0,发现调用自己本身,判断这是一个递归函数。

    fakename.png

    后面会和.exe字符串进行比较,如果相等的话会call sub_4010A0。

    fakename.png

    然后这个函数内部还有FindNextFile等函数,到这里可以下结论,这个函数会在C盘找exe后缀的文件,如果是exe后缀文件,就调用函数进行一些操作。


    跟进sub_4010A0函数,看到CreateFileA,CreateFileMappingA,MapViewOfFile,IsBadReadPtr等函数,无疑又是对文件进行操作。

    这个函数再往后看到stricmp函数和movsd、movsb指令,这是字符串操作函数。仔细分析是把dword_403010字符串传送ebx的位置。

    fakename.png

    转到dword_403010字符串,看到如下信息,这是IDA错误的标记,高亮这个变量按a键即可转成字符串。是kerne132.dll,注意是1 。

    fakename.png




    现在知道这个可执行文件遍历整个文件系统来查找以.exe结尾的文件,在.exe文件中找到字符串kernel32.dll的位置,并使用kerne132.dll替换它。


    逆向分析总结

    Lab07-03.dll被复制到C:\Windows\System32目录中并被命名为kerne132.dl。可以断定这个恶意代码修改可执行文件让它们访问kerne132.dll,这意味着了kerne132.dll会替代kernel32.dll被修改过的可执行文件所加载。

    而上面略过的繁琐的操作部分应该就是把真正的kernel32.dll的的导出表整合到自己的kerne132dll中。这样任何依赖kernel32.dll的程序都会先加载kerne132.dll,然后再通过这个加载的伪冒的dll来加载真正的kernel32.dll导出的函数。

    接下来可以通过基础静态分析来查看kerne132.dll的导出表来验证上面的结论。






    搬运不易.....如内容有问题烦请管理立即删除即可。。。










评分

参与人数 16HB +23 THX +11 收起 理由
消逝的过去 + 1
再来壹瓶 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
花盗睡鼠 + 2 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
24567 + 2
sjtkxy + 1 + 1
Jawon + 2
bing_mao + 1
一路走来不容易 + 1
创客者V2.0 + 1
虚心学习 + 1
雷锋同志是是是 + 1 + 1
太阳神 + 2 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
Soul1999 + 1
zxjzzh + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
Cerolluo + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
Shark恒 + 10 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
lies 发表于 2022-11-23 20:08 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Cerolluo 发表于 2022-11-23 20:17 | 显示全部楼层

感谢大佬,已收藏!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
曾经沧海 发表于 2023-2-24 07:27 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
曾经沧海 发表于 2023-2-27 07:18 | 显示全部楼层

看了楼主的帖子。打算去自己练一下。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
一生逍遥 发表于 2023-3-24 17:48 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
剑北苍 发表于 2023-4-21 00:44 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
sjtkxy 发表于 2023-4-21 04:57 | 显示全部楼层

提示: 作者被禁止或删除 内容自动屏蔽
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表