MDS 多维标度法

       现在有一些点,把他们表示成矩阵X,然后很容易就能求出他们的距离矩阵D。反过来,给出距离矩阵求点,就不是那么容易的事。这个问难我初中就觉得很难,最近机器学习课上,老师意外的讲到了一个算法CMDS,解决了我的问题。

      Multidimensional scaling (MDS), 说白了就是给你距离矩阵算点,我们知道这有无数个解(如果有解)。matlab和octave都有内置算法,cmdscale。因为我最讨厌只讲理论不实践的人,当然没办法实验的除外,比如爱因斯坦偶像。所以我就使用octave实现了一下mds。

      具体算法以及为何这么算,见github。我没有办法,在这里把公式全部打出来。下面是算法核心:

       另外这个算法不局限于从距离算点。而且不一定是欧式距离。在机器学习中,有这样一种情形:有很多数据,都是关于某些物体的相似度(距离),我们抽取一些特征,把这些特征在低维空间表示。比如有100种酒,品酒师给出两酒之间的相似程度,然后使用mds算法,算出向量矩阵,一般维数都会降低不少(也就是可以用作降维)。在此基础上统计研究,就方便多了。

      来看一个结果,多么美丽! 刚开始我以为得出的结果只会旋转,没想到还会镜像。。mds_mirror

 

链接:

  1. 台湾清华大学课程

LEAP

WiFi认证已经第三弹了。LEAP是企业版WiFi常用的认证方式,是EAP的一种,而且没有正式的协议。但是LEAP就像WEP一样不是很安全,ASLEAP就是一个攻击工具。LEAP基本要被PEAP代替。本来是想直接实验PEAP的,没想到我的系统默认用的是LEAP,索性就从简单的开始。

leap
图片来自etutorials

由上图可以看出LEAP的基本认证过程。认证服务器RADIUS通过AP发送给用户一个Challenge,就是一个随机字符串。用户使用特定算法(密码+MD4+DES)处理字符串,返回给RADIUS。同时用户也要对该RADIUS进行认证,步骤相同,但是加密算法不同。


Wireshark分析

通过Wireshark分析我的认证过程。(请不要尝试破解我的密码。。。如果你需要测试,可以联系我)。截图中显示前两步,一个是PC,8 bytes,一个是PR 24bytes。而且Cisco也提醒我这个协议是不安全的,牛!所以有了PC和PR之后就可以开始测试了。
LEAP
查看LEAP协议,有以下约定:

  • PC是RADIUS发送给用户的Challenge
  • PR是用户发送给RADIUS的Response
  • APC是用户发送给RADIUS的Challenge
  • APR是RADIUS发送给用户的Response

那么根据协议,得出:

我去,NtPasswordHash是个什么?搞了半天,这是Microsoft PPP CHAP Extensions,还有Version2.我看着蛋碎,其实就两句话。还有MPPEHASH,原理一样。

然后Challenge的构造是使用DES加密算法。因为出来的NtPW和MPPEHASH都是要补成21字节长,然后分成3段,分别使用这3段作为密钥加密Challenge,然后合并后产生24 bytes的Response。坑爹的是21/3 = 7 bytes。DES要8 bytes密钥,所以首先要扩展密钥。这实在说不清,而且补的那位是奇偶校验位,大多数时候被忽略,看代码。

完整代码和实验数据见github,我的测试结果就不放了。不要告诉我到这份上了,还不知道怎么破解LEAP密码。关于无线还有两部分,一个是PEAP,一个是Reaver。

链接:

  1. LEAP攻击
  2. Cisco官方文档
  3. PPTPKIT
  4. EAP各种代码

openssl heartbleed

      出了POC的时候,我还在上课,下课了大网站都打好了补丁。真是不逢时。有Heartbleed专门的一个网站。毕竟openssl是广泛部署在linux上的,这是影响范围非常大的漏洞。导致各大厂商躺枪。

openssl

     很多博客都已经对这个漏洞进行了分析,我水平还有限,不太看得懂。感觉这个博客才是正宗的。还有大概是翻译的中文博客freebufwooyun

      截至目前(2014.04.08,22:00)我使用ssltest.py(当然作者不是我,是jspenguin)成功测试了account.wandoujia.com,cefamilie.com,存在漏洞没有修复。下面是利用cookie登录豌豆荚的页面。

wandoujia

4.14补充,据说还能恢复密钥,我不是很清楚,看github

所以这件事给我的启示:

  • 协议实现是安全中最薄弱的一环。要Code Review
  • 不要老想着推翻数学理论。
  • 那个ssltest.py脚本为什么这么牛,我要好好修行!