记一次挖矿木马样本分析

前言


搜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脚本了。

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是一个矿池


Untitled

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

免责声明:本文章如果文章侵权,请联系我们处理,本站仅提供信息存储空间服务如因作品内容、版权和其他问题请于本站联系