社工模拟:利用BadUSB穿透3层内网

栏目: 编程工具 · 发布时间: 6年前

内容简介:作为一个安全人员,听过许多社工APT案例,钓鱼邮件、水坑攻击、丢个u盘等等。前段时间在一次培训中了解到BadUSB的攻击方式,可以通过U盘达到控制服务器的效果,在著名的美剧《黑客军团》中也出现了在停车场扔BadUSB来进行钓鱼的场景。

作者:tinyfisher@先知社区

作为一个安全人员,听过许多社工APT案例,钓鱼邮件、水坑攻击、丢个u盘等等。

前段时间在一次培训中了解到BadUSB的攻击方式,可以通过U盘达到控制服务器的效果,在著名的美剧《黑客军团》中也出现了在停车场扔BadUSB来进行钓鱼的场景。

社工模拟:利用BadUSB穿透3层内网

一时好奇,于是尝试模拟一次社工,利用VMware搭建了3层网络靶场,通过BadUSB+MSF的攻击手段,一步一步渗透到第三层网络。

三层网络靶场搭建

本次模拟实验的网络拓扑如下:

  1. 第一层网络,模拟企业办公网,为一台win7的员工办公电脑,

  2. 第二层网络模拟内网,是一台win2003服务器,

  3. 第三层网络为企业核心网,为一台 Linux 服务器。攻击者的攻击机有kali和win10。

社工模拟:利用BadUSB穿透3层内网

我们可以利用VMware搭建出3层网络的网络环境,首先在虚拟机中新建3块网卡,并选择仅主机模式:

社工模拟:利用BadUSB穿透3层内网

我们将kali设为第一层网络vmnet1,在网络适配器中选择自定义vmnet1:

社工模拟:利用BadUSB穿透3层内网

在第一层靶机win7虚拟机设置中添加一个网络,并将两个网络分别设为vmnet1和vmnet2,达到双网卡的效果:

社工模拟:利用BadUSB穿透3层内网

同理,将第二层靶机win2003设为双网卡vmnet2和vmnet3:

社工模拟:利用BadUSB穿透3层内网

最后,将第三层靶机linux的网络设为vmnet3:

社工模拟:利用BadUSB穿透3层内网

至此,我们本次试验的3层网络靶场已经搭建完毕,攻击者的kali只能访问第一层网络,而无法访问第二层和第三层的靶机:

社工模拟:利用BadUSB穿透3层内网

BadUSB介绍

效果演示

在介绍BadUSB之前,我们先来看一下他的威力,下面的u盘看上去是一个u盘,但其实内部是一个单片机,普通人很容易被迷惑。

社工模拟:利用BadUSB穿透3层内网

我在本地的win10上做了演示,我的系统装了防病毒软件,并且补丁也更新到最新,但当我将上面的u盘查到电脑上的时候,他达到了任意执行命令的效果。

社工模拟:利用BadUSB穿透3层内网

当然上面的操作只是为了演示,我们完全可以利用他来做更多隐蔽的攻击操作。

什么是BadUSB?

简单来说,就是让USB设备伪装成键盘,被插入的电脑猝不及防会被迅速输入一定的“指令”,这个指令会让该电脑迅速成为肉鸡,这个漏洞最早在2014年的BlackHat安全大会上公布。

BadUSB最可怕的一点是恶意代码存在于U盘的固件中,由于PC上的杀毒软件无法访问到U盘存放固件的区域,因此也就意味着杀毒软件和U盘格式化都无法应对BadUSB进行攻击。

常见的BadUSB

1、TEENSY

攻击者在定制攻击设备时,会向USB设备中置入一个攻击芯片,此攻击芯片是一个非常小而且功能完整的单片机开发系统,它的名字叫TEENSY。

通过TEENSY你可以模拟出一个键盘和鼠标,当你插入这个定制的USB设备时,电脑会识别为一个键盘,利用设备中的微处理器与存储空间和编程进去的攻击代码,就可以向主机发送控制命令,从而完全控制主机,无论自动播放是否开启、是否安装杀毒软件,都可以成功。

社工模拟:利用BadUSB穿透3层内网

2、USB RUBBER DUCKY

简称USB橡皮鸭,是最早的按键注入工具,通过嵌入式开发板实现,后来发展成为一个完全成熟的商业化按键注入攻击平台。

它的原理同样是将USB设备模拟成为键盘,让电脑识别成为键盘,然后进行脚本模拟按键进行攻击。

社工模拟:利用BadUSB穿透3层内网

制作一款简易BadUSB

制作一款BadUSB我们需要以下工具:

1、BadUSB设备

目前在淘宝有售,我们这里选用的是Digispark,Digispark是一个基于ATTINY85微控制器的USB开发板,体积小且价钱便宜,淘宝有售:https://item.taobao.com/item.htm?spm=a1z09.2.0.0.57db2e8dK2zETX&id=559310622821&_u=b50qdl8ef4d

社工模拟:利用BadUSB穿透3层内网

2、Arduino IDE

Arduino IDE用于烧录代码的编译器,可以将我们的恶意代码烧录到BadUSB中,配置好相关参数,将开发板设为Digispark,编程器设为USBtinyISP:

社工模拟:利用BadUSB穿透3层内网

编写好代码后,我们就可以点击“上传”按钮,然后插入BadUSB设备,一款简易BadUSB就做好了。

MSF内网渗透

有了上面的BadUSB的知识,我们可以模拟一个社工场景:企业内部人员捡到了一个“u盘”,出于好奇插在了自己的办公电脑上,而这个“u盘”其实是一个BadUSB,插上之后会自动下载攻击者用MSF制作的后门,所以在插上u盘之后,员工的办公电脑就已经被黑客控制,黑客从而可以进一步进行内网渗透、横向扩展。

下面我们就来看看如何利用MSF一步一步进行内网渗透:

制作MSF后门:

msf的msfvenom命令可以生成我们所需要的后门:

社工模拟:利用BadUSB穿透3层内网

其中,192.168.59.128是msf监听端的地址,6666是msf监听端的端口。我们将生成的shell.exe放在卡里搭建的web服务上。

MSF开启监听:

在MSF服务端,我们开启监听,等待win7反弹shell:

社工模拟:利用BadUSB穿透3层内网 社工模拟:利用BadUSB穿透3层内网

BadUSB烧入攻击程序

根据工作中真实监控的payload套路,我们在BadUSB中烧入如下程序,让第一层靶机Win7自动下载攻击者kali中的制作好的shell.exe,并执行:

社工模拟:利用BadUSB穿透3层内网

这样一来,当win7被插上u盘后,攻击者的msf就获得了一个反弹shell:

社工模拟:利用BadUSB穿透3层内网

meterpreter渗透

Meterpreter是MSF中的一个模块,攻击payload在攻击成功以后给我们返回一个控制通道——Meterpreter shell。

Meterpreter shell作为渗透模块有很多有用的功能,比如添加一个用户、打开 shell 、得到用户密码、上传下载远程主机的文件、运行cmd.exe、捕捉屏幕、得到远程控制权、捕获按键信息、清除应用程序、显示远程主机的系统信息、显示远程机器的网络接口和IP地址等信息等等。

我们可以在meterpreter中输入shell获得靶机win7的shell,执行ipconfig,发现第二层网络的网段信息:

社工模拟:利用BadUSB穿透3层内网

为了使得MSF能够继续对第二层网络进行渗透,我们首先需要添加路由表:

社工模拟:利用BadUSB穿透3层内网 社工模拟:利用BadUSB穿透3层内网

这样,通往192.168.90.0/24网段的流量通过meterpreter 的session2进行路由。然后,我们在msf启动socks代理:

社工模拟:利用BadUSB穿透3层内网 社工模拟:利用BadUSB穿透3层内网

这样其他攻击软件可以通过MSF socks代理、添加的路由对第二层渗透。

此时,我们已经可以访问第二层网络192.168.90.0/24了,按照常见的渗透思路,我们会对第二层网络进行扫描探测,看看存活主机有哪些,比如用nmap进行扫描,不过在此之前,我们还需要配置kali中的proxychain,通过proxychain 将nmap的流量通过msf的socks代理,进行第二层的网络扫描。

配置proxychain

修改/etc/proxychains.conf,将里面的服务器和端口设置为msf socksserver的信息:

社工模拟:利用BadUSB穿透3层内网

此时,我们可以利用nmap进行第二层网络的探测:

由于proxychains无法代理icmp的数据包 所以必须添加-Pn -sT参数,即不检测主机是否存活,直接进行端口tcp扫描。

社工模拟:利用BadUSB穿透3层内网 社工模拟:利用BadUSB穿透3层内网

通过扫描我们发现了,第二层网络中的靶机地址192.168.90.129,同时开启了80、445、3306、3389端口,因此下一步的渗透可以从这几个端口考虑。 这里有几个思路,可以从80端口找漏洞,尝试上传webshell,3306和3389可以尝试口令爆破,而445端口第一个就会想到大名鼎鼎的MS17-010,永恒之蓝。

永恒之蓝

虽然wannacry事件已经过去一年多了,内网里存在ms17-010漏洞的情况在各个行业并不少见,在这次模拟环境中,第二层网络win2003就存在这个漏洞,我们可以利用msf直接对ms17-010进行利用,拿到shell,配置攻击参数,由于第二层服务器无法直接和攻击者的kali进行通信,所以这里注意payload要设置为bind_tcp,即采用正向代理的模式。

社工模拟:利用BadUSB穿透3层内网

成功攻击,获得meterpreter shell:

社工模拟:利用BadUSB穿透3层内网

拿到system权限,我们可以修改administrator密码,或者新增管理员用户:

社工模拟:利用BadUSB穿透3层内网

端口转发

我们看到,第二层的win2003服务器开启了3389,我们可以登录远程桌面,如果没有开启也没关系,我们可以通过下面的命令开启。

社工模拟:利用BadUSB穿透3层内网

现在,我们无法直接从最外层访问第二层的3389,我们需要将3389的流量转发出来,从而登录远程桌面:

metepreter> portfwd add -l 7777 -p 3389 -r 192.168.90.129 #将目标机192.168.90.129的3389端口转发到本地kali 7777端口

社工模拟:利用BadUSB穿透3层内网

至此,我们已经可以在自己的攻击机上,远程登录并控制第二层靶机了。

第三层网络渗透

同样,我们要进一步对第三层网路进行渗透的话,第一步还是添加到第三层的路由:

社工模拟:利用BadUSB穿透3层内网

然后是利用nmap探测第三层网络端口信息:

社工模拟:利用BadUSB穿透3层内网

开放了80和22端口,思路比较明显,要拿到权限,要么ssh口令爆破,要么从web端找漏洞传webshell。

口令爆破

首先尝试第一个思路,看看ssh是否存在弱口令,我们使用auxiliary/scanner/ssh/ssh_login模块,配置好用户名和字典,开始爆破:

社工模拟:利用BadUSB穿透3层内网

果然存在弱口令123456,直接拿到root权限。

web渗透

我们可以在浏览器中配置kali为代理服务器,从而访问第三层网络:

社工模拟:利用BadUSB穿透3层内网

打开访问,发现是Typecho的博客系统:

社工模拟:利用BadUSB穿透3层内网

对于这种CMS我们的思路一般是直接去互联网搜索CMS的漏洞poc进行测试,这里就不再进一步演示:

社工模拟:利用BadUSB穿透3层内网

至此,我们通过BadUSB让第一层网络中的win7系统下载并运行我们的恶意软件,然后通过MSF利用 MS17-010、口令爆破、web渗透 等方式穿透三层内网,最终拿下第三层网络系统的权限。常见的渗透思路可以参考下面的脑图:

社工模拟:利用BadUSB穿透3层内网

总结

本次模拟只是最简单的演示,实际情况会比这个复杂的多,比如目标会安装防病毒软件,因此,当利用BadUSB下载msf后门的时候需要考虑如何免杀,不然很容易被发现;各个网段一般也会做隔离, 因此如何找到网络突破口比较难 ;内部会有各种安全设备,比如IDS、蜜罐、TDA等等,所以真正渗透比本次试验要难的多。

但这里出现的员工安全意识较差,补丁更新不及时、没有安装防病毒软件或者病毒库更新不及时、以及系统存在弱口令的问题在实际工作中也是经常遇到, 做好企业安全工作这些基础工作很重要。

最后,通过USB接口攻击的案例很多,BadUSB只是一类,还有通过USB接口横跨PC和Mobile平台进行攻击的案例。 我们在日常使用USB设备时,不要使用陌生的USB设备,避免USB存在恶意代码导致安全风险。

声明:本文来自阿里安全响应中心,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如需转载,请联系原作者获取授权。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Pattern Recognition and Machine Learning

Pattern Recognition and Machine Learning

Christopher Bishop / Springer / 2007-10-1 / USD 94.95

The dramatic growth in practical applications for machine learning over the last ten years has been accompanied by many important developments in the underlying algorithms and techniques. For example,......一起来看看 《Pattern Recognition and Machine Learning》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试