病毒分析教程第十二话--使用fakenet-ng模拟C&C连接

样本MD5:E8F57996607F41B951F201F2CAFAE15D,下载地址:https://app.any.run/tasks/add02a26-c07f-49cd-8d7d-a1791369c862。这是一个木马,但由于C&C服务器不存活了,所以ANYRUN无法检测出其是否恶意,今天,我们就来通过FakeNet-NG神器,来模拟C&C服务器,以揭露出样本的完整恶意行为。
病毒分析教程第十二话--使用fakenet-ng模拟C&C连接

首先使用查壳工具检测,没有壳,然后IDA打开发现,导航栏有一大段灰的,第一反应就是代码被自定义的算法加密了。
病毒分析教程第十二话--使用fakenet-ng模拟C&C连接

可以通过前文(https://blog.****.net/m0_37552052/article/details/104238986)所介绍的VirtualAlloc断点方法,直接定位到payload被解密的地方。如下图,下完断点后F9运行,发现代码空间已经来到0x12FXXX(栈上)了,说明这段代码很可能就是解密出来的payload了,接下来就开始单步调试吧。
病毒分析教程第十二话--使用fakenet-ng模拟C&C连接

单步着,发现调用了LoadLibraryA函数,加载了WINNET.dll,这是个网络相关的dll,有猫腻。
病毒分析教程第十二话--使用fakenet-ng模拟C&C连接

紧接着,又发现了InternetOpenW,就可以确定该样本用的是Internet这一套的API来与C&C通信了,而不是WSASocket。
病毒分析教程第十二话--使用fakenet-ng模拟C&C连接

然后直接在InternetOpenW上下断,F9直接到达C&C连接的代码部分。
病毒分析教程第十二话--使用fakenet-ng模拟C&C连接

然后一路单步到HttpSendRequestW,这个API就是用来发送请求的,C&C域名为rightroundion.ru,该C&C已经不存活了,所以我们也从Wireshark看到了没有dns查询结果。
病毒分析教程第十二话--使用fakenet-ng模拟C&C连接

因为没有连接到C&C,所以代码直接退出了。
病毒分析教程第十二话--使用fakenet-ng模拟C&C连接

好,上述就是调试木马时基本会出现的情况,C&C不存在,样本直接退出了,无法调试到核心恶意代码。接下来,就是神器FakeNet-NG出场了,它可以模拟C&C服务器,让我们成功往下调试,右键管理员权限运行。
病毒分析教程第十二话--使用fakenet-ng模拟C&C连接

开启后,由于样本收到了rightroundion.ru的返回数据包,所以可以成功向下调试了,FakeNet-NG也显示出了请求信息,且定位到发起的进程是FXAD_exe。
病毒分析教程第十二话--使用fakenet-ng模拟C&C连接

F9让样本跑完后,Ctrl+C让FakeNet-NG结束运行,同目录会出现txt文件,这两个txt文件是FakeNet-NG抓到的C&C通信流量。可以看到样本POST了很多加密数据到C&C服务器,User-Agent也伪装成了Christmas Mystery 5.5.3。
病毒分析教程第十二话--使用fakenet-ng模拟C&C连接

使用Wireshark打开FakeNet-NG抓下来的数据包,再配合插件patoolkit也可以看到C&C通信的信息。
病毒分析教程第十二话--使用fakenet-ng模拟C&C连接

OK,FakeNet-NG的简单演示就完了,其还有一些好用的功能大家可以去摸索摸索,比如debug功能,一旦发现网络连接,直接调试器attach到相应的进程,从而立即定位到相应的恶意代码。