Linux样本——IDA调试分析ELF文件

主要是自己遇到了一个Linux样本,记录下从不熟悉到熟悉的过程,也可以帮助更多在逆向分析这条路上的人。

Linux平台调试工具

1、动静分析结合的跨平台工具-IDA

2、无图形界面的调试神器-GDB

3、Linux平台开源调试工具-radare2

使用IDA远程调试

1、Linux系统配置调试ELF文件环境,使用file命令查看elf文件类型,得知文件运行平台是32位

Linux样本——IDA调试分析ELF文件_第1张图片

2、拷贝IDA远程调试服务文件linux_serverLinux 平台

           1)一定要拷贝IDA对应平台的文件,否则调试报错

           2)Linux 64位平台上调试32位程序需安装对应的32位库,根据报错提示自行百度、Google安装对应的库

Linux样本——IDA调试分析ELF文件_第2张图片

3、修改linux_server文件属性为可读可写可执行,并运行linux_server

Linux样本——IDA调试分析ELF文件_第3张图片

4、设置远程Linux调试,Application和Input file填写样本路径,Directory填写样本上一级目录

Hostname填写Linux IP地址

Linux样本——IDA调试分析ELF文件_第4张图片

5、点击start按钮,开始调试样本

Linux样本——IDA调试分析ELF文件_第5张图片

6、调试后可以看到pusha,pushad和pusha的差别在于前者操作数是32位,后者操作数是16位。

6.1、我们在调试样本遇到跳转时尽量本着“仅下不上”的原则

6.2、调试时也要注意查看retn这类指令返回到哪个地址?申请空间还是原代码空间?

6.3、样本在执行的过程中肯定会申请空间来操作shellcode代码,需要注意查看区段信息(shift+F7)

7、根据上面自己摸索的原则,开始调试样本,直接鼠标放到下一行代码处(0x00C37665),F4执行过来

Linux样本——IDA调试分析ELF文件_第6张图片

8、最后我们调试发现,出现了popa指令,有添加新的区段,通过ret指令执行到申请空间中的shellcode代码

Linux样本——IDA调试分析ELF文件_第7张图片

Linux样本——IDA调试分析ELF文件_第8张图片

9、执行多次后发现又多了区段debug002,Hex view窗口中查看后起始地址后,发现ELF文件头标

志,但根据经验好像只是解密填充了一部分,继续调试

Linux样本——IDA调试分析ELF文件_第9张图片

10、ELF文件填充完整,接下来Dump文件

Linux样本——IDA调试分析ELF文件_第10张图片

11、编写IDC脚本Dump内存中ELF文件,shift+F2打开IDC脚本执行窗口,编写完后run执行

Linux样本——IDA调试分析ELF文件_第11张图片

IDC脚本

auto fp, begin, end, dump_ELF_byte;
fp = fopen("D:\\dump_elf.bin", "wb");
begin = 0x08048000;
end = 0x080cd000;
for (dump_ELF_byte = 0x08048000 ; dump_ELF_byte < end; dump_ELF_byte ++ )
    fputc(Byte(dump_ELF_byte), fp);
return 0

12、IDA中查看Dump文件,可以看到很多有用的字符串信息

Linux样本——IDA调试分析ELF文件_第12张图片

样本MD5+SHA-1:A194CF906F67B596FD6E50BEDBABF202+B3AB0907DAE7F7F1E8CF3F313525B07BB0D9438C

参考文章:

https://blog.csdn.net/abc_670/article/details/80066817

https://blog.csdn.net/XXOOYC/article/details/51356342

 

你可能感兴趣的:(逆向学习,病毒分析之路)