• 我们在哪一颗星上见过 ,以至如此相互思念 ;我们在哪一颗星上相互思念过,以至如此相互深爱
  • 我们在哪一颗星上分别 ,以至如此相互辉映 ;我们在哪一颗星上入睡 ,以至如此唤醒黎明
  • 认识世界 克服困难 洞悉所有 贴近生活 寻找珍爱 感受彼此

恶意代码技术理论:GO语言恶意代码分析

基于语言 云涯 4年前 (2020-07-09) 2431次浏览

使用netcat“复活”样本通讯

后门型样本必须保证能和C2通信,才会执行后续功能,那么可以使用netcat模仿C2服务器,来与样本进行通信。

具体步骤如下

使用一台虚拟机当作服务器,这里使用win7当作服务器,使用win10来分析样本。

让两台虚拟机的网络都使用同一个网卡,然后使用仅主机模式;

images

将win7这台服务器的IP修改成样本通讯IP,win10这台主机修改成和win7同一个网段,然后保证二者之间可以相互ping通。

开启netcat,监听样本通信端口,命令是比如“-l -v -p 7000”

images

等到样本连接服务器的时候,就可以使用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函数进行逆向。

 

 

 


云涯历险记 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:恶意代码技术理论:GO语言恶意代码分析
喜欢 (0)