网站的不可预测性与安全

作者: 云计算机网 分类: 云安全 发布时间: 2015-04-15 12:34

忙里偷闲来写篇blog,时间关系,不能写太具体和发散了。

今天的主题是不可预测性(non-predictable)

这一点往往可以用来防止伪造类的攻击。

为了说明问题,我们先回忆以下的一些场景:

Debian ssh key 生成范围可以预测漏洞
2008年出来的漏洞,漏洞描述的记忆有点模糊了,大致是由于Debian上生成ssh key的库与进程数有关(1-65535?),导致生成出来的key在一定的范围内,所以是可以预测的。攻击方法就是生成那么几万个key,然后一个个去尝试连接。

CSRF(跨站点请求伪造)
攻击要求知道对方的url才行,往往是 <img src=http://fvck.com/delete.do?id=123 />类似这种;防御方案一般是加一个系统随机生成的token,比如以上url改为 http://fvck.com/delete.do?id=123&token=AS323ASfdq398jedf11,这样攻击者猜测不到这个token,也就无从发起CSRF攻击。(这里指纯CSRF攻击,混合了跨站的在我这里叫XSRF,不进入考虑)


PHP的rand() 函数
再来看看PHP的rand,直接引用manual里的一段描述:
On some platforms (such as Windows), getrandmax() is only 32768. If you require a range larger than 32768, specifying min and max will allow you to create a range larger than this, or consider using mt_rand() instead.


Linux Classic Stack Buffer Overflow
以前的经典溢出,特别是一些栈溢出,都是直接精确计算地址,然后覆盖了EIP后,指引程序流程直接jmp到shellcode在栈上的地址,这是因为古老linux(包括其他UNIX类OS)的栈基址是不变化的。
现在,不论是linux还是windows都加入了ASLR,让栈基址随机变化,类似的变化还有 stack cookie -- 这个值也是随机的, heap 中也是如此。


内存攻击中在可预测性上的发展
上面刚说了有ASLR等手段来对抗原始的溢出攻击,那么到了现在,发展出了一些更高级的攻击方式。比如 Heap Spray ,因为IE、flash、java等分配的内存堆是在一定范围内的,如果正好在这个内存范围内存在一个可以作为指令执行的地址,而该指令又不会影响到程序,类似NOP,就能成功HEAP Spray。

如果说举这个例子还不够说明问题的话,那么看下面这个例子。
在windows中,TEB的地址经常是随机变化的,不过这个变化的范围往往也是有限的,比如TEB的基址经常在 0x7ffdxxxx 以上变化, 我们就可以采用尝试多次连接的方式,促使多个TEB填满这些地址,从而保证我们在执行shellcode时,能够利用到TEB内的一些东西来做些事情(比如把shellcode放到TEB,或者是其他利用方式)。


比较有趣的例子还有一个。在ASLR大行其道的今天,Stack基址的预测也开始出现。因为在Windows上,据说stack的基址也是存在一个变化范围的,如果我们Bruteforce 它,也有可能在数次之后,就能成功溢出www.it165.net。

  • 【赛迪网-IT技术讯】高考一过,考生们身上的备考压力徒然减轻,纷纷做起了假期娱乐计划;而其他的初高中生甚至大学生们也即将迎来7月的暑假。

    但暑假干点什么放松好呢?玩网游是大部分男孩子的选择之一。

    许多网游厂商也借此推出类似“金榜题名”、“鱼跃龙门”的新服以及暑期活动,以招揽更多的玩家。

    但AVG不得不提醒广大的网游爱好者们,做好安全防护,千万别让“网游账号被盗”之类的不愉快而影响整个暑假。

    AVG中国病毒实验室近日截获一种最新的网游盗号木马。

    该盗号木马隐藏自身的手段很巧妙,只有当你的游戏运行起来之后,该木马才会激活,然后悄无声息地盗取你的网游账号和密码。

    我们将其命名为“LPK网游大盗”。

    该病毒的原理简单描述如下:

    1.病毒母体运行之后,找到目录windows\system32\下的lpk.dll文件,拷贝一份到lpk32.dll 。

    (说明:lpk.dll是Windows的语言包文件:Language Pack,一般的包含文本输出的程序都会加载该dll,游戏也不例外。

    病毒然后释放一份恶意的lpk.dll到temp目录,然后用这个恶意的lpk.dll覆盖掉正常的lpk.dll。

    2.为了不影响系统正常运行,这个恶意的lpk.dll是在正常的lpk.dll基础上增加了恶意的代码,执行完恶意的代码之后然后再执行正常的lpk.dll的代码。

    这个恶意的lpk.dll加了壳,且做了反调试处理。

    从下面的导出函数列表对比图中可以看出,病毒将lpk.dll中正常的LpkDllInitialize函数改为了DllEntryPoint。

    正常的lpk.dll是没有入口函数的,只作为一个函数库来使用。

    而恶意的lpk.dll将正常的lpk.dll的初始化函数改为DllEntryPoint这个dll入口函数,意在只要这个lpk.dll被加载,dllEntryPoint函数就被执行。

    3.脱完壳后,我们正是在DllEntryPoint里发现了病毒的恶意行为:

    病毒首先判断系统里是否有杀毒软件进程“V3LSvc.exe”在运行,如果有,直接退出lpk.dll所在的游戏进程。

    否则,病毒会盗取以下程序/游戏里的用户名、密码:

    病毒会判断系统是否存在上述进程,如果存在,则创建独立线程监控以获取用户的账号信息。

    通过进程名,我们可以判断出该病毒会盗取玩家账号的游戏有如下: #p#分页标题#e#

    地下城与勇士(dnf.exe)

    冒险岛(maplestory.exe)

    FIFA online 2(FF2Client.exe)

    天堂(lin.bin)

    暗血(darkblood.exe)

    洛奇英雄传(Heroes.exe)

    阿玛迪斯战记(LOB.exe)

    艾尔之光(x2.exe)

    我们在上面提到lpk.dll会被游戏加载,所以只要游戏一运行,替换后的lpk.dll中的恶意行为就会被触发。

    所以,以上网游的玩家在这个暑假玩网游的时候就得多加小心咯,以防虚拟财产失窃。

    目前该系列病毒已经被AVG检测为PSW.OnlineGames。

    (责任编辑:admin)

  • 相关推荐:

  • “LPK网游大盗”横行肆虐
  • 专家详解X卧底:原理简
  • 网恋木马专攻女网友 黑
  • 新网购木马变身生化武器
  • 网购木马“压缩炸弹”在
  • 盗号木马又增新成员 网
  • 端午节网上买粽子小心网
  • 百变毒虫频繁变身突破杀
  • 办公一族的困绕:互联网
  • 网银吸血鬼盯上网购网银
  • 网站内容禁止违规转载,转载授权联系中国云计算网