内容简介:低成本安全硬件实战遇到的那些事
* 原创作者:魍魉,本文属FreeBuf原创奖励计划,未经许可禁止转载
世界属于终端 世界属于 Linux 世界属于算法
楔子
今年二月份,通过@ya0guang大神的文章我初步接触到了安全硬件低成本调教的姿势,我将跟随ya0guang大神,向大家分享在低成本安全硬件实战中遇到的种种问题以及解决办法。
笔者希望对此感兴趣的读者在花费较少金钱的情况下体会到硬件安全的魅力所在。
BadUSB on Arduino
BadUsb是我很早就想玩的一个项目——早在2014年底的PacSec会议上便已经提出,由于时间关系一直拖一直拖,国内也没有什么较好的学习资料,最近几个月,BadUsb教程似雨后春笋般冒了出来,这次我使用的是T莫家的Arduino Leonardo
购买时还发现有各种各样的板子,小的,大的,带壳的,圆的,方的……使用什么板子无所谓,只要芯片是32U4 即可。
插上板子,打开arduino ide 选择好COM和开发板:
那么问题来了,我们怎么验证我们的板子是不是好的呢?写个程序吧
#include <Keyboard.h> void setup() { // put your setup code here, to run once: } void loop() { // put your main code here, to run repeatedly: Keyboard.println("Hello World!"); delay(500); }
千万别这样!
如果这样上传程序来验证板子好坏……那么……你每次插板子它都只会输出预定的内容
以至于你无法烧录你真正想烧的程序,这就是我第一次遇到的问题
怎么解决呢?我尝试过用CP2102的USB TO TTL 烧录,可惜失败,最终解决方法
用cp2102连接Leonardo ,打开ide 将默认的程序上传至开发板,
在这个时候,拔掉cp2102,用数据线连接Leonardo ,会自动上传,成功后你的板子就是新的了。
这些程序可以给你们一些新的思路去啪啦啪啦[滑稽],解压密码是FreeBuf
RFID on PN532
RFID同样也是我很早就想玩的一个项目,它在国内早已遍地开花——
饭卡水卡空调卡
我同样也是一个没钱的屌丝,只买得起PN532,但在实战过程中也体验到了不一般的乐趣。
PN532调教就有点麻烦了,购入板子后,就连接线都是一波三折!卖家未提供usb to ttl 模块的接线图,评论区的接线图也是参差不齐,再后来的尝试过程中,得出 cp2102正确接线方式是这样的:
VCC-VCC
GND-GND
SDA-RXD
SCL-TXD
接好后插上电脑,安装好驱动,一般卖家都会提供的吧,那么问题又来了,作为一个只会图形见面的小白,我怎么用呢?于是百度PN532,发现有一篇关于PN532上位机的教程
But … 百度根本找不到PN532上位机!但这件困难又怎么难得住劳动人民呢?
我有万能的下载中心:
首先打开注册机,点击注册,会在当前目录生成一个验证文件(其实只要有密钥离线用也可以,我在班上电脑试过了)
接着打开上位机,如果连接没问题,驱动没问题,点击“发现NFC设备”应该会有如下提示:
放上卖家给的白卡,点击读整卡,程序会自动读取卡里的数据
但是……我在读取学校水卡的时候,遇到了“扇区全加密”的问题
这又该如何是好?仔细阅读ya0guang大神的文章,作者在文章中提及了,mfcuk(再说一遍!不是mfuck!)(我给其他的小白说下:mfcuk是密码破解工具,mfco是数据读取工具,nfc-mfclassic是写卡工具)可以破解卡密码,可是作为一个不会linux,不会kali的小白,我该怎么办呢?
我又找到了mfcuk等文件的win版:
终于可以啪啦啪啦了!打开“打开mfcuk.Bat”挂了一伙儿程序跑出了卡密码
记录下卡密码,用记事本打开“打开mfoc.bat”
绿色:额外添加一个key到默认密码里
黄色:设置输出数据的名称
当前目录下的”key.dump”文件就是你的卡的数据
那现在写卡吧
打开cmd,定位到当前目录
先用mfoc读取被写卡的数据(设为bk.dump),并把所写数据放置当前目录(设为fan.dump),运行:nfc-mfclassic w A fan.dump bk.dump
到目前为止,基于pn532的nfc已经调教的差不多了,最后解释下那三个文件的语法:
MFOC [-H] [-K KEY] …[-P PROBNUM] [-T TOLERANCE] [-O OUTPUT] -H 帮助文档 -K 自定义密匙 -P 探测次数 – T 探测延时 -O 是大写的O(欧),不是0(零) 指定输出文件名
NFC-MFCLASSIC R|R|W|W < > [<KEYS.MFD>[F]] R|R|W|W R标示读READ,W表示写WRITE,特别注意,当使用大写W时,软件将尝试覆写0扇区的UID A|A|B|B 选择使用密匙A或密匙B 大写时将忽略错误 DUMP.MFD 我们将要写进卡里面的文件名,我们这里是XIZAOKA.MFD KEYS.MFD 之前DUPM白卡产生的文件,主要作用就是保存了白卡的密匙。这里是BAIKA.MFD F 当UID不匹配时,强制使用前面的KEY,我们不需要用到,当然这个参数加上去也没有影响。
mfcuk - 0.3.8 Mifare Classic DarkSide Key Recovery Tool - 0.3 by Andrei Costin, zveriu@gmail.com, http://andreicostin.com Usage: -C - require explicit connection to the reader. Without this option, the connection is not made and recovery will not occur -i mifare.dmp - load input mifare_classic_tag type dump -I mifare_ext.dmp - load input extended dump specific to this tool, has several more fields on top of mifare_classic_tag type dump -o mifare.dmp - output the resulting mifare_classic_tag dump to a given file -O mifare_ext.dmp - output the resulting extended dump to a given file -V sector[:A/B/any_other_alphanum[:fullkey]] - verify key for specified sector, -1 means all sectors After first semicolon key-type can specified: A verifies only keyA, B verifies only keyB, anything else verifies both keys After second semicolon full 12 hex-digits key can specified - this key will override any loaded dump key for the given sector(s) and key-type(s) -R sector[:A/B/any_other_alphanum] - recover key for sector, -1 means all sectors. After first semicolon key-type can specified: A recovers only keyA, B recovers only keyB, anything else recovers both keys -U UID - force specific UID. If a dump was loaded with -i, -U will overwrite the in the memory where dump was loaded -M tagtype - force specific tagtype. 8 is 1K, 24 is 4K, 32 is DESFire -D - for sectors and key-types marked for verification, in first place use default keys to verify (maybe you are lucky) -d key - specifies additional full 12 hex-digits default key to be checked. Multiple -d options can be used for more additional keys -s - milliseconds to sleep for SLEEP_AT_FIELD_OFF (Default: 10 ms) -S - milliseconds to sleep for SLEEP_AFTER_FIELD_ON (Default: 50 ms) -P hex_literals_separated - try to recover the key from a conversation sniffed with Proxmark3 (mifarecrack.c based). Accepts several options: Concatenated string in hex literal format of form uid:tag_chal:nr_enc:reader_resp:tag_resp Example -P 0x5c72325e:0x50829cd6:0xb8671f76:0xe00eefc9:0x4888964f would find key FFFFFFFFFFFF -p proxmark3_full.log - tries to parse the log file on it’s own (mifarecrack.py based), get the values for option -P and invoke it -F - tries to fingerprint the input dump (-i) against known cards’ data format -v verbose_level - verbose level (default is O) Usage examples: Recove all keys from all sectors: mfcuk -C -R -1 Recove the sector #0 key with 250 ms for all delays (delays could give more results): mfcuk -C -R 0 -s 250 -S 250 [mfcuk]
理理思路:首先用mfoc读所复制卡的数据(hack.dump)再读取被复制卡的数据(baika.dump)如果所复制卡是全加密卡,那么使用mfcuk破解密码,最后使用nfc-mfclassic写入卡数据。
当然nfc的探索不可能仅仅如此,我们可以修改卡数据来达到自己想要的小目的,Remember:我还会更新的!
本文提及到的和没有提及到的所有 工具 和源代码: 链接: http://pan.baidu.com/s/1kUTOfCN 密码:a83s
本文所含内容具有一定攻击性,切勿用于非法用途!弄出什么新闻也别找我负责!!!!
参考资料:
http://www.freebuf.com/geek/127601.html
http://www.freebuf.com/articles/terminal/128238.html
http://www.evil0x.com/posts/9103.html
http://coderboy.cn/index.php/archives/23/
* 原创作者:魍魉,本文属FreeBuf原创奖励计划,未经许可禁止转载
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
在你身边,为你设计
腾讯公司用户研究与体验设计部 / 电子工业出版社 / 2013-1 / 69.00元
设计属于所有人,也意在为所有人使用,这既是设计的价值,也是设计的责任。本书内容包括:设计理念、设计方法、用户研究、体验设计、设计流程和工具,以及团队成长与管理等方面的知识与经验分享。一起来看看 《在你身边,为你设计》 这本书的介绍吧!