工控智汇

工控智汇

记一次挖矿木马样本分析

admin 160 47
前言

搜main函数关键字可以判断是用shc加密shell脚本生成的二进制文件

在0000000000400F7E位置函数,找到了加载shell命令的位置

shc部分源码

/**//***Thissoftwarecontainsanadhocversionofthe'AllegedRC4'algorithm,***Myimplementationisacompleterewriteoftheonefoundin*anunknown-copyright(283characters)versionpickedupfrom:*From:allen@()*Newsgroups:*Subject:ShrinkthisCcodeforfameandfun*Date:21May199610:49:37-0400*AnditislicensedalsounderGPL.**That'swhereIgotit,nowIamgoingtodosomeworkonit*Itwillresidehere:*/staticconstcharmy_name[]="shc";staticconstcharversion[]="";staticconstcharsubject[]="GenericShellScriptCompiler";staticconstcharcpright[]="GNUGPLVersion3";staticconststruct{constchar*f,*s,*e;}provider={"MdJahidul","Hamid","jahidulhamid@"};

尝试生成一个echo“helloworld”,看看shc生成的文件是什么构造

shc

安装shc

sudoadd-apt-repositoryppa:neurobin/ppasudoapt-getupdatesudoapt-getinstallshc

加密后会得到一份生成的c源码和可执行文件

[04:08:08]ctfshow@ubuntu/home/ctfshow/Desktop/test(0)shc-f./[04:08:11]ctfshow@ubuntu/home/ctfshow/Desktop/test(0)*[04:08:12]ctfshow@ubuntu/home/ctfshow/Desktop/test(0)./

会输出一个和编译好的

那么可以照着的源码来快速分析手上的二进制文件

调试发现ret会记录当前进程是否为父进程,

调试发现如果为父进程,则执行的命令是

execbash./程序自己

那么相当于把代码在子进程里面又跑了一遍

这个时候ret就是1了,加载的也会是text里面真正的代码段

思路

程序把shell命令用rc4加密在了硬编码里面,回到样本,只要更改ret的值然后调到execvp然后printmem就能得到shell脚本了


①网安学习成长路径思维导图
②60+网安经典常用工具包
③100+SRC漏洞分析报告
④150+网安攻防实战技术电子书
⑤最权威CISSP认证考试指南+题库
⑥超1800页CTF实战技巧手册
⑦最新网安大厂面试题合集(含答案)

patchdumpmem

修改ret值

在memcpy下断

祖传字符串脚本

base=0x000000000602B83=0x00000000006074F0ans=[]foriinrange(base,):tmp=_wide_byte(i)(tmp)if(tmp==0):print(bytes(ans))ans=[]

shlll=b''withopen("","w")asf:print((),file=f)

暂且写个脚本存一下

shell分析

到这一步就比较明了了

shell脚本里面存的命令全是用明文显示的

首先是删除日志和竞品矿机,然后设置iptable

释放iptable_reject

然后从远程服务器下载矿机

其中一个ip是172.104.170.240

上网搜一下ip是一个矿池

搜索矿池ip发现样本行为和安天于今年5月发布的yayayaminer有一定相似之处,在初期的排查阶段借鉴了其思路。