使用netcat“复活”样本通讯
后门型样本必须保证能和C2通信,才会执行后续功能,那么可以使用netcat模仿C2服务器,来与样本进行通信。
具体步骤如下
使用一台虚拟机当作服务器,这里使用win7当作服务器,使用win10来分析样本。
让两台虚拟机的网络都使用同一个网卡,然后使用仅主机模式;
将win7这台服务器的IP修改成样本通讯IP,win10这台主机修改成和win7同一个网段,然后保证二者之间可以相互ping通。
开启netcat,监听样本通信端口,命令是比如“-l -v -p 7000”
等到样本连接服务器的时候,就可以使用netcat接管样本信息交换了。
函数混乱,无法通过名称来辨别
打开IDA,发现函数名称全是sub之类的,无法通过名称来辨别函数功能(去符号了)。
这个时候下载idapython脚本-“golang_loader_assist.py”,然后加载运行,就会发现这个脚本把一些函数名称给解析出来,这就减少了了误入系统函数的风险。
也可以使用”IDAGolangHelper插件“(https://github.com/sibears/IDAGolangHelper),来逆向golang程序。
可以使用go_parse来解析 https://github.com/0xjiayu/go_parser/tree/py3,比较推荐这个
目前ida pro7.6对golang解析做了优化,可以不用脚本即可解析。
Golang基础知识-逆向
//执行 runtime_init()
//启动GC gcenable()
//执行main_init()
fn := main_init
fn()
//执行main函数,此时程序进入用户的代码
fn = main_main
fn()
所以逆向golang要找到main_main函数进行逆向。