关于DroidSheep
DroidSheep是一款Android平台上的安全测试工具,可以用来进行web session劫持等安全测试。它能够监听通过无线传输的HTTP包并且提取其中的会话ID。
关于ARP欺骗攻击
ARP(Address Resolution Protocol)是地址解析协议,是一种将IP地址转化成物理地址的协议。局域网通信是通过MAC地址作为门牌号的,我们通过ARP投毒实现针对主机的欺骗。
测试环境
Mx4 (检测机)
android-d92b72c70cc30a44 192.168.0.3 38:bc:1a:b8:97:98
Xiaomi(攻击机)
android-7469d8f8181f48dd 192.168.0.4 c4:6a:b7:ff:90:36
网关
C:\Users\iruo>arp-a Interface:192.168.0.5 --- 0x3 Internet Address Physical Address Type 192.168.0.1 c0-a0-bb-ba-90-ae dynamic
ARP欺骗攻击测试
开启DroidSheep欺骗并劫持会话
Wireshark抓包
攻击机发送arp欺骗包,192.168.0.1 at 90:36,网关欺骗。这是受害者(笔记本)收到arp包将修改自己的arp缓存。
登陆百度
所以说使用公共WiFI还是很危险滴,说不定你喝着咖啡听着歌就被对面的屌丝修改了微博头像。
防御
1,安卓手机防火墙droidsheep guard,当检测到攻击的时候可以弹出提示框并关闭wifi
2,电脑客户端360 arp防火墙之类的软件
3,使用VPN隧道
4,路由器做MAC地址绑定
继续分析
在会话管理缺陷中存在会话固定Session Fixation,Cookie 欺骗,会话劫持Hijacka Session。DroidSheep使用的是哪一种方式呢?下面我们继续分析。
1,会话劫持
开发人员在开发他们的自有会话ID 时经常忘记整合的复杂性和随机性,这些因素对安全来说是必须的。在用户登录的时候Session 生成会话ID,存储在客户端Cookie 的某个字段中。我们可以通过注册许多个账号然后看其规律使用暴力破解session。Wengoat中使用J-Baah 预测WEAKID的数值,当然这是在Cookie很简单并有规律可循的条件下完成,现在面对复杂的cookie几乎不可能啦。
14499-1405390970391 14500-1405390970##1## 14501-1405390970500
2,Cookie 欺骗
使用记住我功能会在本地保存cookie信息,通过cookie认证就不需要再输入密码了。不过如果cookie被截获攻击者就可以绕过密码验证实现攻击,一般通过XSS跨站攻击获取cookie。
3,会话固定
服务器通过每个用户的唯一的Session ID 来确认其合法性。如果用户已登录,并且授权他不必重新验证授权时,当他重新登录应用系统时,他的Session ID 依然是被认为合法的。在一些程序中,可能会在GET-REQUEST 请求中传递Session ID。这就是攻击的起点。
一个攻击者可以用一个选定的 Session ID 给受害人发送一个超链接。例如,这里有一个准备好的邮件,它看起来像是一个从应用程序管理员发来的官方邮件。如果受害者点击了这个链接,并且该受害者以攻击者指定的ID 登录了系统,那么攻击者可以不经授权直接使用与受害者相同的ID 访问该页面。
Webgoat案列
1,添加欺骗链接
<a href=http://192.168.19.128/WebGoat/attack?Screen=16&menu=1700 &SID=ruo > Goat HillsFinancial</a>
2,受害者点击链接登陆
Jane/tarzan
3,窃取会话
http://192.168.19.128/WebGoat/attack?Screen=16&menu=1700&SID=NOVALIDSESSION
替换为&SID=ruo
PHP演示
设置php.ini 使接受get传入PHPSESSID的值。
session.use_only_cookies= 0, session.use_trans_sid= 1
或者代码加入
ini_set'session.use_trans_sid',0);
设置会话页面并创建session_id
Fixation.php <?php session_start(); $_SESSION['username'] = 'ruo'; ?>
查看$_SESSION值,攻击者没有PHPSESSID是无法查看到username值的。
Show.php <?php session_start(); if (isset($_SESSION['username'])) { echo $_SESSION['username']; } ?>
1,攻击者发送的欺骗链接
<a href=http://www.ruos.org/Fixation.php?PHPSESSID=1234></a>
受害者访问链接后将PHPSESSID设置为1234
2,攻击者使用这个PHPSESSID访问页面即可恢复刚建立的会话
http://www.ruos.org/show.php? PHPSESSID=1234
回到DroidSheep,我们将截获的信息通过邮件发送出来(Export via email)。
经过firebug删除cookie尝试,发现BDUSS是认证的字段,我们添加截获的cookie刷新下就登陆啦。
[Cookie: domain: baidu.com path: / BDUSS=VjZ0RiWjQ2aE1QbFkzM-----------------------我是马赛克-----------------FBQUFBJCQAAAAAAAAAAAEAAABPheUJY2g5cwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHM~dFRzP3RUZD;]
ARP欺骗都是局域网很成熟的攻击手段了,比如常用的网络执法官,360的限室友网速之类的软件几乎都是基于欺骗来的。
不过这还可以变化出花样繁多的欺骗,实现简单的欺骗后使用数据转发sniffer流过的数据截获用户名密码,在不被察觉的情况下你需要做好NAT转发,形成中间人攻击。
ARP欺骗存在网络数据包比较多,不稳定,容易被反追踪,这时候你可以考虑使用DNS投毒。
[本文由作者ruo原创并投稿FreeBuf.COM,转载须注明来自FreeBuf.COM]