pe导入表工具

(pe 导入表)

本文主要分析了亚马逊、支付宝等登陆设计。指出登录信息被截获并用于重放攻击的可能性,指出登录设计有改进的空间。附近中是POC(Proof of Concept)在浏览器内抓取程序POST登录信息,保存c:\\hijackhttp.txt在亚马逊,支付宝的登录信息可以明确重现。

OWASP对web登录设计提出的建议包括密码应具有一定的长度和复杂性,并始终使用正确的登录提示TLS加密通道传输密码,防止密码被截获。参考:https://www.owasp.org/index.php/Authentication_Cheat_Sheet
但仅仅通过加密通道传输登录信息似乎是不够的,因为即使是通过加密通道TLS加密地传输的登录信息也可能被截获。

登陆case分析:

首先几个站点的登录设计。

1. 亚马逊

亚马逊使用用户登录信息用户名和密码https传输。从截获的数据中可以清楚地看到登录email和相应的password。

2. 看雪论坛http://bbs.pediy.com/login.php?do=login

使用雪论坛http明文传输登录信息,password做了一次MD5运算。由于MD理论上不能推出5是不可逆转的password。但对于黑客来说其实无需知道password用多少?password的MD5值构建数据包模拟发送给服务器,也能收到有效的信息cookie成功登录信息。这叫重放攻击。下图为202年登录数据包cb962ac59075b964b07152d234b70是密码123的MD5值。

3.淘宝/支付宝

支付宝的非控件登录与亚马逊相同。用户名、密码等登录信息直接使用https传输。使用控件登录时password加密处理,但分析后得知,只要控件加密时密钥固定,password同样,加密密文永远不会改变。这意味着即使password被加密,无法抵抗重放攻击。经过试验利用抓取的password模拟登录密文构造数据包确实可以成功登录。

以上web登录设计的主要问题是无法抵抗重放攻击,一旦登录信息被截取,就可以用来登录。就像支付宝的一个控件登录一样,密钥永远不变的加密毫无意义。支付宝登录密码加密,亚马逊登录密码明文,安全性相同,攻击使用难度相似。
不幸的是,即使使使用了登录数据包,也可以截获登录数据包https加密通道。

截获数据包的方法

方法一:

架设代理服务器比如Burp Proxy,使用代理服务器设置浏览器。所有浏览器http以及https数据都会被Burp Proxy代理截获,可以查看https解密的明文数据。当https数据被截获后,浏览器将验证主机的证书,浏览器将发出访问安全警告,以防止用户继续访问。因此,这种方法通常用于这种方法http和https数据包分析。Firefox代理设置:

方法二:

将代码注入浏览器,从浏览器中截取明文登录数据。Firefox使用函数Pr_write()发送http数据,IE使用函数HttpSendRequest()发送http数据。只有hook相关函数可以截获http/https明文数据。
我以Firefox以实验为例,可以抓取网站的登录信息。附件中有实验工具,有兴趣的可自行测试。
Hook Pr_write。虽然网上有很多hook但都不够稳定。微软detours最好使用最稳定的库hook库。Hook Pr_write前五个字节不能简单地替换,因为前两个指令不是五个字节。Detours将相关指令反编译,然后根据需要更换不同长度字节的指令,稳定性好。
中国大部分电脑都配备了360杀毒剂,似乎360防止每个代码注入路径死亡。如果进程无法注入,则更改注入文件。修改firefox.exe或者相关DLL的PE加载导入表hook的DLL. 附件中setdll.exe命令行工具可以指定DLL加入到PE文件导入表。

改进方法:

韩国游戏公司的登录设计可供参考。登陆地址https://nid.naver.com/nidlogin.login
他的登陆过程分为两步, 首先从www.nid.naver.com/login/ext/keys.nhn 获取公钥加密key
然后用上一步得到的。key加密用户名和密码,用户名和密码提交加密后到达www.nid.naver.com/nidlogin.login。由此获得的登录信息是动态变化的,不能重放。由此获得的登录信息是动态变化的,不能重放。