Flare-On 2018 writeup(下)

阅读量    45932 |

分享到: QQ空间 新浪微博 微信 QQ facebook twitter

malware skillz

全能型后门,从LaunchAccelerator.exe开始分析

程序先修改注册表,复制自身自运行

然后释放下载后门的代码,载入内存运行

后门下载器加载库函数从ldr链表中遍历模块和模块函数,使用Hash来获取API定位,此后的API都用这种方法遍历,由于是病毒经典使用方法,可以搜到hash表,没有搜索到的可以动态修改hash参数来取结果

https://www.scriptjunkie.us/files/kernel32.dll.txt

后门下载器搜索了必要的库函数,通过DNSQuery_A中查询到的DNS附加数据,夹带了加密的PE文件

然后解密,并运行到指定的函数

直接运行起来,可以发现通过DNS查询到的数据解密后会有弹窗

并在桌面上放了一个crackme.exe

从pcap.pcap中dump出网包中的DNS数据,将DNS查询数据用网包数据覆盖得到真正的后门文件,后门下载器会运行到他的导出函数Shiny

该函数查询当前eip的位置,搜索到自身的PE头,获取所有Sector相关的信息,重新加载到申请的内存页中,并从Dll入口点开始运行

对必要资源初始化和库函数定位后,后门开始连接主控机,并等待交互

后门主要的流程从ShakeAndInitAes开始,连接主控机后,主控机和肉鸡各生成一个随机数以商定之后的AES通讯密码

此后由主控机发出请求,肉鸡执行对应命令,如果检测到数据异常则断开socket重新握手商定

所有收发包都由统一规则进行封装,封装大致格式

对原始数据进行了AES加密和Zlib压缩操作,并加入一些信息以及校验头,标明了长度、包类型、当前包AES_IV、hash等其他校验冗余信息

通过对网包的复原和回放、解码可以发现,肉鸡A被感染后通过TCP 9443与主控机通信,主要经历了握手、上报了Malware各类版本、获取计算机名、磁盘、列目录、文件信息、ping主机、http请求、SMB广播控制

肉鸡A在感染受控过程中通过SMB2协议对病毒文件进行广播,感染肉鸡B,并通过肉鸡A接管肉鸡B,通过SMB2协议建立命名管道进行交互,交互数据的打包解包方式和TCP方式一致

肉鸡B受控经历了一些磁盘、文件信息上报,并通过肉鸡A写入了Cryptor.exe,并执行Cryptor.exe level9.crypt level9.zip,然后执行删除相关文件,最后通过FTP上传level9.crypt

将level9.crypt从网包中dump,可以看出已经被Cryptor.exe加密了,取得Cryptor.exe,为.Net编写的文件加密程序,de4dot反混淆后整理

程序对原始文件进行Hash计算、将文件名长度、文件名、文件Hash作为文件头进行AES加密,最后在加密数据头部加上cryptar及github版本

AES加密会从github一项目获取信息作为文件加密AES的Key和IV,可以发现github项目最新版本已经不是level9.crypt的版本从网吧或者git中拿当时版本的信息

获取20180810的信息对level9.crypt进行AES解密,得到level9.zip文件

该zip包被加密了,密码需要在肉鸡A和主控机的通信中寻找

搜索zip敏感字,找到密码really_long_password_to_prevent_cracking

解压zip包,取得一张空白图片和一个并没有任何作用的exe

上色,取得flag

recover_these_messages_lost_in_the_colorful_bits@flare-on.com

 

Suspicious Floppy Disk

拿到floppy.img,得到一系列文件

可以发现大概为dos系统盘,和原版img进行比较,多了infohelp.exe、key.dat等文件

使用dosbox+ida5.5对infohelp.exe进行调试,由于是16位程序,无法使用F5插件,掏出王爽老师的汇编书籍温习一下16位x86汇编,然后在调试时,地址前加上对应的段名。

可以发现大致行为是输入password,将输入的password写入password.dat然后打开message.dat显示失败信息

ida对该文件进行逆向,可以发现

程序由16位Watcoom编译,使用对应的watcom编译带调试符号的库,并制作FLIRT signature的签名文件,ida识别出大部分函数