安全路透社
当前位置:安全路透社 > 网络转载 > 正文

低成本安全硬件实战遇到的那些事

* 原创作者:魍魉

世界属于终端 世界属于Linux 世界属于算法

楔子

今年二月份,通过@ya0guang大神的文章我初步接触到了安全硬件低成本调教的姿势,我将跟随ya0guang大神,向大家分享在低成本安全硬件实战中遇到的种种问题以及解决办法。

笔者希望对此感兴趣的读者在花费较少金钱的情况下体会到硬件安全的魅力所在。

BadUSB on Arduino

BadUsb是我很早就想玩的一个项目——早在2014年底的PacSec会议上便已经提出,由于时间关系一直拖一直拖,国内也没有什么较好的学习资料,最近几个月,BadUsb教程似雨后春笋般冒了出来,这次我使用的是T莫家的Arduino Leonardo

QQ截图20170422205121.png

购买时还发现有各种各样的板子,小的,大的,带壳的,圆的,方的……使用什么板子无所谓,只要芯片是32U4 即可。

插上板子,打开arduino ide 选择好COM和开发板:

QQ截图20170422211353.png

QQ截图20170422211413.png

那么问题来了,我们怎么验证我们的板子是不是好的呢?写个程序吧

#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);

千万别这样!

如果这样上传程序来验证板子好坏……那么……你每次插板子它都只会输出预定的内容

QQ截图20170422211814.png

以至于你无法烧录你真正想烧的程序,这就是我第一次遇到的问题

怎么解决呢?我尝试过用CP2102的USB TO TTL 烧录,可惜失败,最终解决方法

用cp2102连接Leonardo ,打开ide 将默认的程序上传至开发板,

QQ截图20170422212216.png

在这个时候,拔掉cp2102,用数据线连接Leonardo ,会自动上传,成功后你的板子就是新的了。

QQ截图20170422212420.png

这些程序可以给你们一些新的思路去啪啦啪啦[滑稽],解压密码是FreeBuf

RFID on PN532

RFID同样也是我很早就想玩的一个项目,它在国内早已遍地开花——

14883780059819.jpg

饭卡水卡空调卡

我同样也是一个没钱的屌丝,只买得起PN532,但在实战过程中也体验到了不一般的乐趣。

PN532调教就有点麻烦了,购入板子后,就连接线都是一波三折!卖家未提供usb to ttl 模块的接线图,评论区的接线图也是参差不齐,再后来的尝试过程中,得出 cp2102正确接线方式是这样的:

VCC-VCC

GND-GND

SDA-RXD

SCL-TXD

接好后插上电脑,安装好驱动,一般卖家都会提供的吧,那么问题又来了,作为一个只会图形见面的小白,我怎么用呢?于是百度PN532,发现有一篇关于PN532上位机的教程

But … 百度根本找不到PN532上位机!但这件困难又怎么难得住劳动人民呢?

我有万能的下载中心:

QQ截图20170422214912.png

QQ截图20170422214817.png

首先打开注册机,点击注册,会在当前目录生成一个验证文件(其实只要有密钥离线用也可以,我在班上电脑试过了)

QQ截图20170422214943.png

接着打开上位机,如果连接没问题,驱动没问题,点击“发现NFC设备”应该会有如下提示:

QQ截图20170422215133.png

放上卖家给的白卡,点击读整卡,程序会自动读取卡里的数据

QQ截图20170422215619.png

但是……我在读取学校水卡的时候,遇到了“扇区全加密”的问题

QQ截图20170422222030.png

这又该如何是好?仔细阅读ya0guang大神的文章,作者在文章中提及了,mfcuk(再说一遍!不是mfuck!)(我给其他的小白说下:mfcuk是密码破解工具,mfco是数据读取工具,nfc-mfclassic是写卡工具)可以破解卡密码,可是作为一个不会linux,不会kali的小白,我该怎么办呢?

我又找到了mfcuk等文件的win版:

QQ截图20170422220132.png

终于可以啪啦啪啦了!打开“打开mfcuk.Bat”挂了一伙儿程序跑出了卡密码 

QQ截图20170422220620.png

记录下卡密码,用记事本打开“打开mfoc.bat”

QQ截图20170422220730.png

绿色:额外添加一个key到默认密码里

黄色:设置输出数据的名称

QQ截图20170422220936.png

当前目录下的”key.dump”文件就是你的卡的数据

QQ截图20170422221035.png

那现在写卡吧

打开cmd,定位到当前目录

先用mfoc读取被写卡的数据(设为bk.dump),并把所写数据放置当前目录(设为fan.dump),运行:nfc-mfclassic w A fan.dump bk.dump

QQ截图20170422221650.png

到目前为止,基于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/

* 原创作者:魍魉

未经允许不得转载:安全路透社 » 低成本安全硬件实战遇到的那些事

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册