你在使用惠普电脑吗?如果答案是肯定的,那么请小心了,你的音频驱动程序可能会存储你的击键记录,甚至泄露你的重要信息。
7.6更新6月,某部委下属网络安全和信息化领导小组办公室已经发布公告通报了惠普电脑存在隐藏键盘记录器问题。据说国内不少公务员也在用着惠普的PC设备,信息隐患实在细思恐极。
而事实上,5月中旬,瑞士安全公司Modzero的安全研究员 Thorsten Schroeder 就已经发现,许多惠普笔记本电脑和平板电脑中的Conexant音频驱动程序变身Keylogger, 记录用户的击键内容。Keylogger可以监测用户的每一次击键信息。该软件不仅仅捕获了特定按键的按键记录,而且还记录了每个按键的点击信息,并将它们存储在一个可读的文件中( C:\Users\Public\MicTray.log)。恶意软件或木马可以利用这一点,绕过系统对可疑行为的安全检测,获取记录文件,窃取用户的账户信息、信用卡卡号、聊天记录、密码等个人信息。
Conexant是一家集成电路制造商,既生产音频芯片也开发相关驱动程序。Conexant High-Definition (HD) Audio Driver音频驱动程序可帮助软件与硬件进行通信。惠普公司根据不同的计算机型号,在Conexant音频驱动程序中写入一些控制特定按键(如媒体按键)的代码。研究人员发现,与Conexant音频驱动程序安装包一起安装的MicTray64.exe应用程序已在Windows系统中注册为计划任务,能够监控击键内容以确定用户是否按下了音频相关的按钮(例如静音/取消静音)。用户的击键记录保存在名为“Users/Public”的文件夹中,可以传送给OutputDebugString调试端口,这个端口允许通过MapViewOfFile函数访问该文件夹中的数据。
音频驱动程序变成间谍软件Schroeder在一篇博客中表示,该软件的目的是识别用户是否已经按下或松开特殊键。但是开发人员加入了诊断和调试功能,用于确保所有按键都可以通过调试界面广播出去,也可以写入硬盘上公共目录中的日志文件。这种调试将音频驱动程序转换成了内置的Keylogger。
研究显示,2015年12月发布的MicTray64.exe的早期版本并不会把击键记录存储到文件夹中。2016年10月,惠普将MicTray64.exe更新到1.0.0.46版本,增添了诊断功能,记录用户击键内容并存储到本地文件夹。目前,共有30种型号的惠普电脑装有1.0.0.46版本的MicTray64.exe。而根据文件的元信息,至少在2015年圣诞节时期,惠普电脑安装的该驱动程序就已经存在击键记录行为。
MicTray64.exe 1.0.0.46版本进行击键记录的具体过程如下:
int64 keylogger_enable(bool activate)
{
[...]
if ( !keylogger_active )
{
[...]
// 13=WH_KEYBOARD_LL: Installs a hook procedure that
// monitors low-level keyboard input events. For
// more information, see the LowLevelKeyboardProc
// hook procedure.
hKeyloggerHook = SetWindowsHookExW(
13, (HOOKPROC)handle_scancode,
hSelf,
0);
if ( hKeyloggerHook )
{
keylogger_active = 1;
return 0;
}
[...]
}
记录功能激活之后,用户每按一次键盘,就会触发以下伪代码执行:
LRESULT handle_scancode(
int _in_nCode,
WPARAM _in_wParam,
tagKBDLLHOOKSTRUCT *_in_lParam_keystroke)
{
tagKBDLLHOOKSTRUCT *key_stroke;
WPARAM wParam;
int nCode;
int64 target;
DWORD is_keyfoo;
int is_keydown;
char tmp;
int64 key_flags;
int64 key_vk;
key_stroke = _in_lParam_keystroke;
wParam = _in_wParam;
nCode = _in_nCode;
if ( _in_nCode >= 0 )
{
target = (cfg_HotKeyMicScancode >> 8 *
(cfg_HotKeyMicScancode_len - cfg_HotKeyMicScancode_len2));
LODWORD(key_vk) = _in_lParam_keystroke->vkCode;
LODWORD(key_flags) = _in_lParam_keystroke->flags;
is_keyfoo = _in_lParam_keystroke->flags & 1;
is_keydown = ~(key_flags >> 7) & 1;
[*] send_to_dbglog(
0x1D,
L"Mic target 0x%x scancode 0x%x flags 0x%x extra 0x%x vk 0x%x\n",
target,
_in_lParam_keystroke->scanCode,
key_flags,
_in_lParam_keystroke->dwExtraInfo,
key_vk);
conexant_handle_fn_keys(
cfg_MicMuteScancodeSettings,
is_keydown,
key_stroke->scanCode,
target,
&cfg_HotKeyMicScancode_len,
&cfg_HotKeyMicScancode_len2,
1);
if ( cfg_MicMuteScancodeSettings & 4 )
conexant_handle_fn_keys(
cfg_MicMuteScancodeSettings,
is_keydown,
key_stroke->scanCode,
(cfg_HotKeyMicScancode2 >> 8 *
(cfg_HotKeyMicScancode2_len - cfg_HotKeyMicScancode2_len2)),
&cfg_HotKeyMicScancode2_len,
&cfg_HotKeyMicScancode2_len2,
1);
tmp = cfg_SpkMuteScancodeSettings;
if ( cfg_SpkMuteScancodeSettings & 8 && is_keyfoo
|| !(cfg_SpkMuteScancodeSettings & 8) )
{
conexant_handle_fn_keys(
cfg_SpkMuteScancodeSettings,
is_keydown,
key_stroke->scanCode,
(cfg_HotKeySpkScancode >> 8 *
(cfg_HotKeySpkScancode_len - cfg_HotKeySpkScancode_len2)),
&dword_1402709C8,
&dword_1402709CC,
0);
tmp = cfg_SpkMuteScancodeSettings;
}
if ( tmp & 4 && (tmp & 8 && is_keyfoo || !(tmp & 8)) )
conexant_handle_fn_keys(
tmp,
is_keydown,
key_stroke->scanCode,
(cfg_HotKeySpkScancode2 >> 8 *
(cfg_HotKeySpkScancode2_len - cfg_HotKeySpkScancode2_len2)),
&cfg_HotKeySpkScancode2_len,
&cfg_HotKeySpkScancode2_len2,
0);
}
return CallNextHookEx(hhk, nCode, wParam, key_stroke);
}
其中,[*]那部分代码触发的功能可以将击键记录写入文件,或通过运行store_keystroke()代码,将击键记录经由Microsofts Debug Monitor 接口广播出去:
void store_keystroke(LPCVOID lpBuffer)
{
WORD *scancode_logline;
int64 str_len;
DWORD NumberOfBytesWritten;
int str_newline;
scancode_logline = lpBuffer;
if ( g_write_to_logfile )
{
SetFilePointer(g_hFile, 0, 0, 2);
str_len = -1;
while ( scancode_logline[str_len++ + 1] != 0 )
;
WriteFile(
g_hFile,
scancode_logline,
2 * str_len,
&NumberOfBytesWritten,
0);
str_newline = '\n\0\r';
WriteFile(g_hFile, &str_newline, 4, &NumberOfBytesWritten, 0);
}
else
{
OutputDebugStringW(lpBuffer);
}
}
#p#分页标题#e#而目前没有证据表明惠普有意为Conexant音频驱动程序加入击键记录功能。 这很可能是开发人员疏忽导致的问题,使得该程序对用户造成潜在威胁。
存在风险的电脑型号及系统
该漏洞被记录为“CVE-2017-8360”漏洞,已经影响了28款惠普笔记本电脑和平板电脑,包括EliteBook 800系列,EliteBook Folio G1,Elite X2, ProBook 600 和400系列, and ZBook等型号。Modzero的安全专家推断其他厂商出产的电脑如果装有Conexant硬件或驱动程序,也可能存在类似风险。
以下为存在问题的电脑型号:
HP EliteBook 820 G3 Notebook PC
HP EliteBook 828 G3 Notebook PC
HP EliteBook 840 G3 Notebook PC
HP EliteBook 848 G3 Notebook PC
HP EliteBook 850 G3 Notebook PC
HP ProBook 640 G2 Notebook PC
HP ProBook 650 G2 Notebook PC
HP ProBook 645 G2 Notebook PC
HP ProBook 655 G2 Notebook PC
HP ProBook 450 G3 Notebook PC
HP ProBook 430 G3 Notebook PC
HP ProBook 440 G3 Notebook PC
HP ProBook 446 G3 Notebook PC
HP ProBook 470 G3 Notebook PC
HP ProBook 455 G3 Notebook PC
HP EliteBook 725 G3 Notebook PC
HP EliteBook 745 G3 Notebook PC
HP EliteBook 755 G3 Notebook PC
HP EliteBook 1030 G1 Notebook PC
HP ZBook 15u G3 Mobile Workstation
HP Elite x2 1012 G1 Tablet
HP Elite x2 1012 G1 with Travel Keyboard
HP Elite x2 1012 G1 Advanced Keyboard
HP EliteBook Folio 1040 G3 Notebook PC
HP ZBook 17 G3 Mobile Workstation
HP ZBook 15 G3 Mobile Workstation
HP ZBook Studio G3 Mobile Workstation
HP EliteBook Folio G1 Notebook PC
可能会受影响的系统如下:
Microsoft Windows 10 32
Microsoft Windows 10 64
Microsoft Windows 10 IOT Enterprise 32-Bit (x86)
Microsoft Windows 10 IOT Enterprise 64-Bit (x86)
Microsoft Windows 7 Enterprise 32 Edition
Microsoft Windows 7 Enterprise 64 Edition
Microsoft Windows 7 Home Basic 32 Edition
Microsoft Windows 7 Home Basic 64 Edition
Microsoft Windows 7 Home Premium 32 Edition
Microsoft Windows 7 Home Premium 64 Edition
Microsoft Windows 7 Professional 32 Edition
Microsoft Windows 7 Professional 64 Edition
Microsoft Windows 7 Starter 32 Edition
Microsoft Windows 7 Ultimate 32 Edition
Microsoft Windows 7 Ultimate 64 Edition
Microsoft Windows Embedded Standard 7 32
Microsoft Windows Embedded Standard 7E 32-Bit
应对方案 #p#分页标题#e#惠普已经积极做出响应,发布了修复方案。用户可以前往惠普客户支持页面,查询自己的电脑型号并下载新的音频驱动程序。此外,Windows系统更新时,也会针对这一问题进行修复。
为进一步确保安全,惠普电脑用户可以检查电脑硬盘,如果发现下列文件之一,就表明击键记录已经被获取:
C:\Windows\System32\MicTray64.exe
C:\Windows\System32\MicTray.exe
尽管每次登录之后文件会被覆盖,但如果程序再次启动,击键信息还是会被记录下去。如果用户将驱动程序备份到云储存或外部储存设备中,历史记录也会保存。
因此,一旦发现以上可执行的文件,用户最好立即将其删除或将文件重命名,以禁止MicTray驱动器继续读取击键记录。同时,删除“用户-公共文档”中的 MicTray.log日志文件夹。