某IOT蠕虫病毒分析之UPX脱壳实战

发布者:xfkxfk
发布于:2018-04-11 16:43

某IOT蠕虫病毒分析之UPX脱壳实战

  • IoT
  • UPX
  • Malware

关于UPX的脱壳文章比较多,基本上都是Windows平台下的脱壳文章,处理起来比较简单。FormSec将在本文中分析一款mips下病毒程序使用的upx壳保护手段。

 

在应急事件处理过程中,提取到病毒样本为virus.dat,样本使用了UPX(3.91)壳,对程序进行了压缩处理。

 

作者对加壳后的样本进行了修改,导致使用upx –d命令解压失败;虽然解压失败了,但是不影响程序正常功能的执行。

 

f9dc0e27b2f0421b3a7b594bef675b46

 

分别使用两个版本的upx程序尝试脱壳,可以看出最新版的提示信息比较具体;

 

提示: upx: virus.dat: CantUnpackException: p_info corrupted

 

由于最新版的脱壳程序直接报告出是p_info字段的问题,在网上找了一圈没有关于针对该问题的解决方案,这里直接找upx(3.94)最新版的源码分析一下,主要简单分析作者使用的干扰脱壳程序的技术手段,以及如何修复;

  1. 定位输出错误信息的位置,直接查找错误信息字符串即可;查找到两处分别对应32位和64位版本的文件头;

  1. 简单分析一下p_lx_elf.cpp -> PackLinuxElf32::unpack 函数的功能;

76f0aa868727d6d090727a86643bfc9c

  1. p_info结构体的定义如下,12bytes;

5fe9cd620feb8625f492e1840879958e

  1. 定位文件中p_info的位置,可以看出作者将该结构体用0填充后,解压程序检测到异常,导致解压缩失败;

93d09d86c3f982908a20f2ec49f76869

  1. 修复upx壳,下图标记的位置保存着有效的p_info->p_filesize 字段(p_filesize 和
    p_blocksize相同)

7729d10b3bb467b298a3001dac82d151

  1. 修复p_info信息:

  1. 脱壳成功;

af38e32f625ebd3097e44bb8c7c9a755

 

上面主要记录了整个处理定位问题,一直到如何修复的方法与思路,希望能够帮助到对二进制病毒分析比较感兴趣的同学;

 

后续有机会的话,会出一篇关于该病毒的详细技术分析报告;欢迎各位斧正;)


声明:该文观点仅代表作者本人,转载请注明来自看雪