Archive for April, 2010

Wireless Series(4): 天线, 信号, 距离 (2010.4.30 Updated)

天线相关知识
http://www.openplatform.com.hk/Knowledge/antenna_b.htm
http://www.mc21st.com/techfield/systech/ant/ant01.htm

几个需要知道的问题:
定向天线能把能量集中到一个方向上. 对于平板天线来说反射板的质量很重要, 因为需要用它来反射电磁波.
有些人不分功率放大器 PA 和低噪音放大器 LNA. 后者是信号的关键, 前者虽然也重要, 但除非用于远程组网, 没有必要追求高功率. 功率和信号当然是两回事.
天线的增益不是万能的, 还需要看驻波比和方向图, 驻波比高到一个程度可能会损坏
设备. 使用方向图能够更好理解信号强度.
阻抗匹配也是一个值得注意的问题, 比如如果有用转接器分出多个天线接口的话, 天线整体效率可能会因为阻抗不匹配而大幅下降, 当然此时的驻波比也会相当高.

信号强度 (RSSI, received signal strength indicator, 接收信号强度指示)
你用 Netstumbler, Wirelessmon, Airodump-ng 等任何软件测试的数值, 都不是 RSSI 的精确值.
这个数值只对比较测试有参考价值. 如通过更换天线比较天线增益, 用同一个无线网卡比较不同无线信号的强弱.
不可比较不同无线网卡的 RSSI. 如需测试请用专业仪器.
想到很多人辨别网卡好坏的方法就是看信号的格数, 说白了, 这个信号强度在驱动程序中是可以修改的.

路径损耗指数 (Path Loss Exponent)
http://ldmc.buaa.edu.cn/imc/slides/lecture3a.pdf

菲涅尔区 (菲尼尔区, Fresnel Zone), 即以发出点和接收点作为椭球的两个焦点, 椭球中间阻挡的部分越少越好.
直线不可视的情况下菲涅尔区可能就有很大一部分被阻挡了, 这样连接就会比较困难.
http://en.wikipedia.org/wiki/Fresnel_zone
http://www.afar.net/fresnel-zone-calculator/

衰落储备(Fade Margin, System Operating Margin)值 = 接收信号强度 – 接收机灵敏度
(注意: 接收灵敏度随连接速率的变化也有不同. 不同的连接速率下灵敏度也都不一样)
衰落储备值在 22 dBm 以上能够保证良好的连接与传输, 14-22 dBm 是可以接受的范围, 小于 14 dBm 的话就会时断时续.
厂商所标灵敏度多数是 8% – 10% 丢包率下的灵敏度, 衰落储备值究竟要给多少才合适, 你自己想想看.
http://www.terabeam.com/support/calculations/som.php
http://www.tplink.com/support/wireless_calculator/index.asp

重要的参考文档
http://akcell.tnu.edu.tw/teaching/97(2)/c/A%E7%AC%AC5%E7%AB%A0.ppt
http://www.eefocus.com/html/09-02/415525030845r2iI.shtml
http://www.zytrax.com/tech/wireless/
http://www.educypedia.be/electronics/antennawifi.htm

关于距离问题
(自由空间) 接收场强计算公式.
Po-Co+Ao-92.4-20logF-20logD+Ar-Cr=Rr
距离在 100m 以内请不要使用这个公式

Po 为发射功率, 单位为 dBm.
(100mW = 20 dBm, 功率每提高两倍就增加 3 dBm, 如 400 mW = 26 dBm)
Co 为发射端天线馈线损耗. 单位为 dB.
(较短的线或直连可不计, 如内置天线的情况, 但事实上馈线损耗不可忽略, 高质量馈线比较难找)
Ao 为天线增益. 单位为 dBi.
(增益一般用理想状况的增益, 实际由于各种原因无法达到理想状况)
F 为频率, 单位为 GHz.
(参考 20 log 2.4 = 7.6, 20 log 5.8 = 15.3. 许多其它公式使用的数值是 32.4, 是因为频率单位是 Mhz.)
D 为距离, 单位为 Km.
(-20logD 实际应为 -10 n log D, 其中 n 为路径损耗指数, 自由空间时取 2, 可以分段计算. 有阻挡的地方可以取 4 以上)
Ar 为接收天线增益. 单位为 dBi.
Cr 为接收端天线馈线损耗. 单位为 dB. (同 Co)
Rr 为接收端信号电平. 单位为 dBm.
(Rr 大于接收端接收灵敏度与所需的衰落储备之和时, 连接质量比较有保证.)

Tags:
Comments

Wireless Series(3): 常用软件与工具 (Linux 平台)

Aircrack-ng (必备的工具. Win32 下有对应版本, 但某些命令不能工作. GUI: FeedingBottle, minidwep)
这一组工具包括常用的 airmon-ng, airodump-ng, aircrack-ng, aireplay-ng, packetforge-ng 和不太常用的 airdecloak-ng, airbase-ng, airtun-ng, airserv-ng, airdecap-ng 等工具.
后面会有专门的章节介绍常用的命令.

Kismet (无线探测器, IDS. 非常好的工具. Wardriving 推荐与 gpsd 配合使用, 不推荐用 kismet 内置 gps 支持)

Wireshark (网络协议分析器, 有 Win32 版本, 主要用于事后分析. 实时监听当然也可以)

Cowpatty (构建 WPA/WPA2 Rainbow table, 也有直接字典破解 WPA/WPA2 的能力, 同类软件还有 pyrit)

john (能够使用内置字典破解许多类的 Hash, 有字典输出能力. 对国内用户实际意义不大, 可以参考 john.conf 中 [List.Rules:Wordlist] 修改以扩大适应范围)

MDK3 (无线网络攻击/探测软件. 应与 airodump-ng 或 kismet 配合使用)

dsniff (嗅探器, 可以探测到 URI, 密码等敏感信息, 有中间人攻击能力.)

tcpdump 和 nmap 拿掉了, 不是很重要. :D

Tags:
Comments

Wireless Series(2): 常用软件与工具 (Windows 平台)

Windows 平台下好东西不太多.

Netstumbler (搜索探测 AP, 不能分辨 WEP/WPA)
同类软件:
Wifi Hopper (使用 hop2kml 软件导出为 kml 但效果未知, 有 wep/wpa 辨别功能)
inssider (个人测试不稳定, 输出的 kml 没法看)
Wirelessmon (少量奇怪的 AP 需要用这个软件连接, 同样有能力搜索无线)
以上软件采用的是主动探测方法, 高级用户可以采用某些软件(如 wIDS, Kismet)来检测甚至干扰分析.
本人不建议使用以上软件进行 WarDriving 活动.

使用 Wireshark 可以检测它们发送的探测数据包.
出处: http://www.willhackforsushi.com/papers/l2-wlan-ids.pdf
Netstumbler:
(wlan.fc.type_subtype eq 32 and llc.oui eq 0x00601d and llc.pid eq 0x0001) and (data[4:4] eq 41:6c:6c:20 or data[4:4] eq 6c:46:72:75 or data[4:4] eq 20:20:20:20)
Dstumbler (active scanning):
(wlan.seq eq 11 and wlan.fc.subtype eq 11) or (wlan.seq eq 12 and wlan.fc.subtype eq 00)
Windows XP probing:
wlan.fc eq 0x0040 and wlan_mgt.tag.number eq 0 and wlan_mgt.tag.length eq 32 and wlan_mgt.tag.interpretation[0:4] eq 0c:15:0f:03

WildPackets OmniPeek (商业软件, 分析功能强大, 部分网卡提供支持 Omnipeek 的可抓包驱动程序, 类似软件: 科来网络分析系统, Sniffer Pro, Wireshark)
EWSA (商业软件, 高速破解 WPA/WPA2 密码, 有 GPU 支持. 当前性价比最好的显卡是 ATI HD5750)
Cain & Abel (多功能破解软件, 效率不够高. 有 Sniffer 的功能)
网卡自带连接管理软件 (不同的芯片需要不同的软件)

Tags:
Comments

Wireless Series(1): 驱动与网卡芯片支持列表 (至 2010.4)

无线芯片制造商就那么几家, 排名不分先后.
Atheros, Broadcom, Intel, Prism, Ralink, Realtek, Zydas(被 Atheros 收购)
就驱动程序来说, 推荐 Atheros, Intel, Realtek, Ralink 这几家的芯片. 但并不是每一个都有良好的驱动.

传统上就很好的芯片:
(基本都是 11g)

rtl8187l (注意不是 rtl8187b) 卡王卡皇魔翼等大量山寨网卡使用该芯片. 常与 rtl8225 (RF Transceiver Chip) 配合使用. 支持最为完善的网卡之一.
(注: 最近出现了所谓 8197 / 8197l 芯片, 实际仍是 8187l 芯片, 需用量产软件恢复为 8187l, 在量产前只能配合商家提供的驱动使用, 否则会被认成 rtl8187b)
rtl8187b 某些网卡偷工减料使用这种芯片. 支持不够好(能用). 需要注意的是它的设备 ID 为 0bda:8197.
p54usb(PrismGT) 瑞银(UR054G) 和 WL5061S. 主芯片是 GW38871K, 可能会被认成 Cohiba 3887. 支持不够好(能用), 信号不错.
zd1211/zd1211b=AR5007UG/AR2524/AR5524 (ZyDas 被 Atheros 收购) 760A, 760N, 762N, WLG-1500, talktalk. 支持完善.
rt73(rt2571) EP-6501(据称新版的可能已更换芯片, 俗称小战卡), 旧版 MW54U 等. 支持完善.
ipw2100/2200 Intel Pro Wireless 2100/2200. 支持较好.
iwl3945/iwl4965 Intel Pro Wireless 3945/4965. (3945 之前有 ipwraw 驱动, 现在已被弃用. 4965 推荐使用 iwlagn) 支持完善.
ath5k Atheros AR521[0-4]/5414/2413/242x. (5k 就是以 5 开头的四位数字. 旧驱动使用 madwifi, 现在已被弃用) 支持完善.

比较新的芯片:
(11n 卡或其缩水版)

iwlagn Intel Wireless WiFi Link 4965/5100/5300/5350/5150/6000AGN, 1000BGN. 支持完善.
ath9k Atheros 802.11n (主要是 PCIe 卡. 编号 AR9xxx, 如 928x 等). 支持完善.
ath9k (ar9170) Atheros AR9170 (开源芯片). 如 WN821N 等. 支持完善.
ath9k_htc Atheros AR9271. FW54U, MW54U(是 11g 缩水版), MW150U, WN722N 等, 驱动正在测试中(将来会加入注入支持).
rt2800usb Ralink 2870/3070. DWA-140(2870), N200U(3070), EP-MS150N(3070) 等. rt2070 是 11g 缩水版. 可使用 Staging Tree 中的驱动上网. rt3070 的驱动正在测试中.
rt2860pci Ralink 2860 PCI. 有测试版驱动.
b43 Broadcom BCM 4303/4306/4309/4310/4311/4312/4313. 驱动可用, firmware 有版权问题.
(注: 开源发行版不能提供 b43 的 firmware, b43-fwcutter 可用于提取 firmware.)
rtl819x (r8192s_usb/r8192u_usb, r8192_pci) 暂无注入支持, 可使用 Staging Tree 中的驱动上网.
rtl8187se 有一个奇怪的驱动能提供注入支持, 稳定性未知. 用该驱动置于 Manage 模式并强制 Probe 能注入.

ps:
不要问哪一个芯片好. LNA 才是接收弱信号的关键.
ps2:
不知道芯片是什么驱动? lsusb 即可. 同理也有 lspci.

Tags:
Comments

Wireless Series 预告篇

前言
淘宝叫停 “蹭网卡” 销售, 实际销售仍然火爆. 甚至有一些人用 Adwords 广告开辟了新的市场.
媒体一边倒的在批评, 但没有人能完整从另一个高度看这个问题, 轻信商家的说法的人不在少数.
在技术的推动下, 单纯的硬件变成了高附加值的产品, 信息的不对称形成了鱼龙混杂的市场.

事实
“蹭网卡” 会长期存在下去, Linux 内核内置支持的网卡芯片中, 很多种有破解的能力. 单纯的下架是不起任何作用的.
市面上的相关产品绝大多数都是山寨产品. 其中某些天线的利润更是丰厚, 反而是 DIY 的一些东西, 质量可能还可以.
大功率网卡寿命短, 是因为放大芯片的功率超出了标称值. 功率虚标严重.
部分网卡的量产软件或驱动允许虚标信号强度. 而信号强度不等于连接质量与传输能力.
淘宝无线网卡市场只有能用的产品, 没有高品质的产品(注). 但这并不是说山寨卡就不能买.
(注: 高品质是指芯片灵敏度较高, 放大芯片的质量好,
专业一点说叫功率放大器 PA 和低噪声信号放大器 LNA. 其中 LNA 是非常关键的部件, PA 也常有功率虚标现象.)
如果你预算充足, 能够出到 30 $ 以上的话(不含邮费) 一定要到 amazon.com 买.
aircrack-ng 论坛推荐的网卡是 alfa awus036h (v2, 1000mW 版本). 淘宝所售同名产品均为山寨产品. 其余网卡推荐问题见文章第五部分.

本系列最终成文顺序与内容可能会有所调整. 预计 5 月份能够结束本系列.
系列文章要求读者有一定的无线相关知识基础, 系列中不会专门对容易搜索到的名词做过多的解释.

Wireless Series(1): 驱动与网卡芯片支持列表 (至 2010.4)
Wireless Series(2): 常用软件与工具 (Windows 平台)
Wireless Series(3): 常用软件与工具 (Linux 平台)
Wireless Series(4): 天线, 信号, 距离 (2010.4.30 Updated)
Wireless Series(5): 网卡好坏的判断标准
Wireless Series(6): Aircrack-ng (1), 基础篇
Wireless Series(7): Aircrack-ng (2), Aireplay-ng 模式
Wireless Series(8): Aircrack-ng (3), 总结篇
Wireless Series(9): FeedingBottle
Wireless Series(10): 高级应用 (1)
Wireless Series(11): 高级应用 (2)
Wireless Series(12): 问与答 (全文完)

由于本人未学过通信专业相关知识, 在此推荐
无线局域网(WLAN)常见问题解析

Tags:
Comments

流言终结者: WPS, CSRF, 802.11n (2010.4.13 补)

某一个圈子内正流传着使用 CSRF(Cross-Site Request Forgery) 破解 WPA2 的传言.

它们的真实出处是这里(需穿墙).
Cracking WPA With CSRF Attacks
Building WPA Hardware Backdoors

使用工具监听 WPS (Wi-Fi Protected Setup) 状态的改变情况, 然后在 WPS 激活时去请求 WPS 认证.
这当然是可行的. 但必须满足很多条件, 第一条就是路由器要有这个漏洞. 而你可能不知道.

先假定路由器有这个漏洞好了. 总体来说, 可操作性没有想象中那么强.
成功的可能途径:
0 物理接触. 这就是那篇 Building WPA Hardware Backdoors 的意义, 能物理接触的话那应该怎么说都好办.
1 社会工程学. 找一个理由联系路由器的所有者, 让他访问你做的页面.
2 利用浏览器安全漏洞, 在网页挂马. 缺点是定向性不太强, 可能需要和第一个方法联用. 有杀鸡用牛刀的感觉.
3 DNS 劫持, 和第二条配合更好. 既然能劫持 DNS (之前有相关的漏洞), 那黑客的能力已经很强了, 没必要用这种方法去搞一个 WPA 密码. 这刀可以用来杀大象了. :D

从这一篇文章(WPScan & WPSpy Tools)中可以下载到 wps_tools.tar.gz.
(运行需要 scapy 库)

wpspy.py 和 wpscan.py 的原理是监听 beacon frame 中的 WPS 信息.
而 Beacon frame 可以使用任意支持 802.11b 的无线网卡监听(802.11n 向后兼容 11b).
当然, 在监听到 WPS 状态改变之后, 必须用支持 WPS 的卡去做 WPS 认证, 11n 更好.
有些人说只能用什么 ipTime 的卡, 按 fcicq 的话说, 那当然是在胡说.

Wireshark SampleCaptures 提供了不少 pcap 样例, 其中就有 WPS 的例子.

wpspy.py 中有如下代码(代码缩进坏掉了, 详细代码请查源文件).

WPS_ID = "\x00\x50\xF2\x04"
def iswpselt(self,elt):
if elt.ID == 221:
if elt.info.startswith(self.WPS_ID):
return True
return False

在 Wireshark 中以 wlan_mgt.tag.number == 221 为过滤器就是第一个判断所实现的功能.
第二步判断 WPS_ID. 要达到同样的效果也可以用 wlan_mgt.tag.oui == 00:50:f2
两个判断不需要联用, 应该只需要第二个就可以了.

wlan_mgt.tag.number == 45 (HT Capability Info) 做过滤器可以得到所有支持 802.11n 的 AP 列表. 别问偶是怎么查到的.

ps:
这篇文章写起来可是挺简单的, 可你要是不会用 Wireshark, 偶可不教你. :D

ps2: 2010.4.13 补
完成 WPS 认证之后, 客户将完成一次 WPA2 握手. 以后将不再需要再使用 WPS 功能.
也就是说, 如果硬等的话可能数个月等不到一个 WPS 请求.

WPS 请求也分 PBC 和 PIN 两种. PBC 即 Push Button Configuration. PIN 即输入 PIN 码.
推荐开启 WPS 的路由器只保留 PIN 功能. WPS PIN 请求即便被截取也是没有意义的.
升级路由器固件, 只使用 PIN 方式添加网卡, 是预防这种攻击的最好方式.

Tags:
Comments

谈谈 Cracklib

Cracklib 是一个检测密码强度用的库.
你在用 passwd 改密码的时候说不准就要和它打交道, 说你密码太弱什么的.

Debian / Ubuntu 用一个命令能查看可以安装的字典.
apt-cache search /usr/share/dict | less

非常不幸, 这些字典没有一个适合中文用户.
你又要怎样制作这样的字典呢?

曾记得用 Windows 2000 的时候有组策略催着 42 天改一次密码.
现在 NT(LM) Rainbow Hash Table 满天飞了. 对于 Vista 之前的系统, 14 位以下密码(含)都是不安全的.
如果有人带着一个装着 Ophcrack + Rainbow Table 的移动硬盘, 那就是最多 10 min 出结果.

时间都过了十年了, 42 天改密码的习惯也没养成. (话说这不是在泄密吗…)

MD5 同样是一个大问题. 这些 Hash 函数对运算能力的需求太低了.
Rainbow Table 和 GPU, FPGA 计算技术一结合立刻提升了破解的能力.

cmd5.com 是一个破解 md5 成功率非常高的网站.
个人推测是从收集密码起家, 然后寻找规律并生成自己的字典.
许多人缺少相关的理论指导, 也没有实践的成果, 闷着头做字典效果一点也不好.

都知道 RAR 压缩包的密码很难破. 是因为它只以文件 CRC 作为成功的标志, 当然如果文件真的损坏的话那是很难办.
WPA / WPA2 难度也不小, 可是有了强劲的 GPU, 每秒几千个上万个密码也不是难事.
可是就这样为什么还破不了? 前面加粗的部分已经点明了深一层的原因, 当然这是否是根本原因偶要持一个保留态度.

许多需要注册才能使用的网站, 在用户注册时提供了密码强度显示条.
个人意见是在非 SSL, 没有隐私权政策的网站上不要提供强密码, 同样也不提供任何敏感信息. (话说 CNNIC SSL 你清理干净了没?)
Web 上的密码哪, 有了次数限制和验证码辅助之后破解难度上升了不少. 对于 SSH 装个 Denyhosts 什么的也挺有用 (公私钥更有用, :D ). 网银和网游的实物密码卡也挺有意思的. 键盘记录器果然无孔不入.

都写了些什么玩意? 没看明白的记住三句话, 经常改密码, 用复杂点的密码, 不安全的地方不提供敏感信息.

Tags:
Comments

LiveCD 选择之路: 全能的 linux-live (补 aufs 编译方法)

squashfs 是个好东西. 不用它的 LiveCD 会让偶很奇怪的. 既然它是个只读文件系统, 那问题就来了. 怎么写入东西呢?
aufs, funionfs, … 等等都冒出来了. 这里不提.
还有许多人想出了一些存东西的办法, 比如 loop + ext3 什么的. loop + LUKS 也有人用.

这个玩意很有意思. 只有在 opensuse 的 livecd 中才能见到它. 怎么用偶是不知道的.
Compressed Loop Image Container File System (clicfs)

http://git.opensuse.org/?p=people/coolo/clicfs.git

opensuse 开发者说用它之后启动速度会有一些提高.

LiveCD 比较大的, 更新比较慢的发行版已被排除在外. 自定义能力, 完成后的大小, 启动速度都是很关键的因素.

Tiny Core Linux(TCL), 包数量太少, 包管理 (自有 tcz 格式) 不完善.
CDLinux, 缺点是包管理不太方便. xfce4 启动慢. 有些太花哨的感觉. 但作为 LiveCD 来说合格了.
Slax 体积太大.
Slitaz 默认只有核心和一个巨大的 initrd. slitaz-loram-cdrom 真的只支持 cdrom. 不会像 cdlinux / tcl 一样到处找. tazpkg 虽说用的是自有格式, 但能够转换 deb/rpm 等那是一个不错的 feature.

没法选了? 答案题目上已经给出了.
linux-live, 是 slax Live CD 的副产品?

只要你编译一个支持 squashfs 和 aufs 的核心, 剩下的一切由它完成.
这里没有必要重复制作 LiveCD 的过程.

结论就是 slitaz + linux-live 了. 如果 slitaz 不满足要求的话… 那就不干了? :D


for 2.6.33:
git clone http://git.c3sl.ufpr.br/pub/scm/aufs/aufs2-standalone.git /usr/src/aufs2-standalone.git
cd /usr/src/aufs2-standalone.git
git checkout aufs2-33
# cd /usr/src/linux-2.6; cp /usr/src/aufs2-standalone.git/*.patch
# patch -p1 < aufs2-base.patch
# patch -p1 < aufs2-standalone.patch
# Recomple now.

Tags:
Comments

不搞架构了

今天果然是一个做重新定位的好机会. 因为今日 “适合表白” 嘛. :D
就现在的工作而言, 借他人之力是比较重要的一条, 但这并不能作为行动的方向. 开源嘛, 这个很容易理解.

最近发现自己的解决算法相关问题的能力在下降. 反过来这是一个做产品原型的机会, 因为这个比较简单嘛.
话说某人说产品经理就是一群时刻在考虑什么需求,什么规划的人. 这样搞太复杂了, 直接用感觉就可以了, 当然没说不做分析.

不太关心国内互联网业界发生了什么事情. 包括 Twitter 上也在尽量调整着信息的来源.
偶该知道的好像很容易就得到了, 不该知道的也没过来. 能做到这一点个人也觉得有些不容易呢.

给产品经理用技术提供一点支持/做个中间人 (注: 写代码的那叫实际工作), 关键时刻给后端当个救火队员什么的, 最近一段时间做做这类事也许会比较轻松.

Tags:
Comments