前言

搜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有一定相似之处,在初期的排查阶段借鉴了其思路。
免责声明:本文章如果文章侵权,请联系我们处理,本站仅提供信息存储空间服务如因作品内容、版权和其他问题请于本站联系