2020/05/18 -
引言本身只知道装壳,只知道用软件可以自动脱壳,对原理一无所知。 而且,最近引进的蜜罐经常下载UPX盒子的样品。 这次分析一下吧。
学习到的是利用vim修改十六进制内容的upx脱壳样本,首先经常下载到蜜罐的文件名称为I。
I样品
文件已经stripped,并使用string命令显示。 大多数字符串没有什么意义,但会显示UPX标记。
弦乐队
在virustotal中检测时,您会发现它被标记为恶意软件。
虚拟脱壳过程
我在网上搜索了关于elf的外壳,但是没有找到很多。 然后安装upx命令、yum install upx,进行脱壳、upx -d i,结果如下所示。
upx失败了
表示p_info部分已被破坏。
然后按照提示信息检索了这个内容。 找到了以下两个内容[1][2]。 第一次看[2]的文章后,感觉不清楚,不知道他具体是什么意思。 (后述:成功脱壳后,[2]在原理上我觉得是更具体的描述。 )
那么主要看文章[1]学习,这篇文章有点跳跃性,有些地方不太理解。 虽然成功了。
首先,自己在linux上分析,使用vim进行二进制显示,vim i,进入后命令%! XD显示文件开头的十六进制数字,如下所示:
二进制显示
确实,正如文中所示,可以看到这个地方被定为0。
那么,按照文中的思路,找到p_info的真正存储位置,然后拖到最后。
p_info位置
然后修正上述位置。
修改后请注意。 此时,直接保存并退出vim,并将文件保存为这样的十六进制文本文件。 重新转换为原始文件,在vim中%! xxd -r。
然后保存并退出虚拟机。
运行upx -d i命令时,可以看到文件已成功丢失。
成功脱壳
再次使用strings进行确认。
莫子
其他文字
可以看到很多莫奇的文字,联想到文章[2]分析的这个僵尸网络的样本,搜索相关内容后发现确实存在这个莫奇病毒。 将此病毒再次上传到virustotal,
确实会显示mozi.m的标记,但下面的引擎标记中不会显示mozi。
这次只是偶然找到了合适的解决方案,简单地理解了外壳的过程,但也不知道具体的原理。
存在以下问题。
为什么修改这些地方的内容不影响软件的运行? 软壳的原理是什么? 参考[1]某IOT蠕虫分析的UPX脱壳实战
[2] upx-packed-elf-binaries-of-the-peer-to-peer-botnet-family-Mozi /