# 从技术角度深入剖析：改号软件，电话号码任意显示，伪造来电显示

Author: 乌云历史资料库 (@wooyun_archive)
Published: 2013-07-22T03:01:00Z
Canonical: https://wepostx.com/topics/722

> 乌云历史资料归档
>
> **原始作者：** 核攻击
> **原始编号：** superkieran-wooyundrops:48
> **原始发布时间：** 2013-07-22 11:01
> **声明：内容仅用于技术研究和个人使用，版权归 wooyun.org。**

---

这是去年写的一篇文章[http://lcx.cc/?i=2484](http://lcx.cc/?i=2484)，转过来了，如有不妥，还请指正。

刚才看到乌云有人发帖问：[网上流传的修改来电的软件实现原理是什么？](http://zone.wooyun.org/content/197)
关于这个东西，我还真了解一点（本人涉猎甚广，啥都喜欢研究一番）……
其实很多年前就有此类技术分析文档，几年前我曾看过一篇技术分析文章，详细讲了这个实现原理，年代久远，尼玛文章找不到了，但是大概内容还记得点，结合搜索，整理了点东西出来。
估计有很多人知道，这种技术是由于不同网络中转发数据用的网关在作怪，但是并不明白更底层的原理，本文将从最底层、最基础的电话传输协议、数据帧开始讲……
关于修改来电显示号码的原理，这个真的是十分古老的东西了，老古董、老掉牙的玩意儿了，起码有二十多年了（和我差不多大，-_-|||），要弄清楚这个原理，首先还得了解下来电号码显示的原理。
其实嘛，修改来电显示这个玩意儿，任何一个电话、通讯、网络电话（VoIP电话）、手机制造公司的工程师、技师都晓得，就和黑客必须晓得IP地址是啥一样，而且他们都可以轻松地做到，无任何难度……
首先了解一点电话网络中数据传输的知识，资料如下：

以下资料摘自：[来电显示原理，电话主叫号码信息的识别及实现](http://wenku.baidu.com/view/a595897da26925c52cc5bf2e.html)

### 电话主叫号码信息的识别及实现
主叫号码信息识别及传送(CID, Calling Identity Delivery, 呼叫身份传递)，是指交换机将主叫用户的主叫号码及呼叫的日期、时间等信息传送给被叫用户，由被叫号用户的主叫号码显示器将信息显示出来并存储。以便用户摘机前就知道到底谁打电话来，或外出回来后查阅谁来过电话。（90年代以前的电话网络居然没有来电显示这个功能，这尼玛怎么用的，难以想象……）
它是由具有主叫号码信息识别服务功能的交换机与具有主叫号码显示服务功能的终端相配合来实现，在终端上可以显示主叫电话机的号码、呼叫时间等信息。

#### 一、CID技术产生背景
美国贝尔通信研究室（BELLCORE）首先引入话音频带数据通信的调制解调方式来实现CID业务，并在1990年提出了相关技术建议（TR-TS-000031， ISUE3，1990年1月），该建议经过多次修改后被称为Bell202建议。数据传送采用了移频键控（FSK）方式，通常称为移频键控方式。
与此同时，欧洲以瑞典为代表的研究机构为能在自己生产的交换机上方便地实现主叫号码传送（Calling Number Delivery）业务，电话终端与交换机之间采用双音多频号码传送方式作为解决方案，通常称为双音多频方式。
经过多年的研究和发展，许多国家认为移频键控方式有较好的发展前景，纷纷以此为基础来制定本国的标准。到目前为止，采用移频键控方式的国家和地区有美国、加拿大、比利时、英国、西班牙、日本、新加坡和中国等。
…… 省略无关内容 ……

#### 二、CID业务功能电话网上开展CID业务，必须考虑各方权益。
主叫用户可以根据自己的意愿在一定权限内控制是否向被叫用户传送自己的号码。被叫用户在登记主叫信息显示权限后，交换机应向被叫用户传送主叫信息。
1、主叫用户叫信息显示权限
主叫用户主叫信息显示权即主叫用户是否允许向被叫用户显示主叫信息。
作为主叫用户，发出呼叫时可以有允许CID和限制CID两种选择。
（1）允许显示
主叫用户的一切正常拨号，均为允许CID的呼叫，应向被叫用户所在终端交换机传送主叫信息。这类用户也可以要求在某次呼叫时不向被叫用户显示主叫信息，这时需要在该次呼叫拨号之前加拨一标志号码（如**，发端交换机收到**后，判别定为该次呼叫的CID业务被限制，送出限制标志，终端交换机不将该次呼叫的主叫号码送到被叫终端设备。
（2）限制显示
主叫用户的一切正常拨号，均为限制CID的呼叫，其主叫号码不送到被叫用户终端设备。这类用户也可以要求在某次呼叫时向被叫用户显示主叫号码，这时需要在该次呼叫拨号之前加拨一标志号码（如**，发端交换机收到**后，判定为该次呼叫的CID业务被允许，送出允许标志，终端交换机将该次呼叫的主叫号码送到被叫终端设备。

```text
无论主叫是允许CID用户还是限制CID用户，当呼叫的对方是110，119，120，122等特服终端时，其主叫号码一定要传送到被叫终端上。
```
2、被叫用户主叫信息显示权限
被叫用户主叫信息显示权限即被叫用户能否显示主叫信息。
（1）用户登记主叫信息显示权限
用户登记了主叫信息显示权限后，在作为被叫用户时，终端交换机应向用户传送相应的显示信息。
·在一次呼叫有主叫号码，则显示“号码+日期+时间”；
·在一次呼叫中终端交换机没有收到主叫号码，则显示“O”；·在一次呼叫中如果不允许显示主叫号码，则显示“P”。
（2）用户不登记主叫信息显示权限
如不登记此权限，交换机不向此用户发送任何信息。

#### 三、CID业务的基本技术
采用移频键控传送方式的交换机应具备与该方式有关的硬件环境，以及数据处理和传送所必要的软件环境。
1、主叫号码及标志在局间的传送
主叫号码信息显示是由终端交换机传给被叫用户终端设备的，因此终端交换机应能顺利得到主叫方号码，这就要求发端交换机将主叫号码等信息通过局间信令系统（如七号信信）传送给终端交换机，随主叫号码一起传送的还有一个标志码，表示主叫方的意愿。如“X”表示主叫号码可以传送给被叫用户；“Y”表示主叫码不愿意传送给被叫用户。
2、主叫信息从终端交换机到用户的传送
终端交换得到主叫号码信息后，根据被叫用户特征以及主叫用户标志码来控制主叫号码信息的传送，可以有下列几种处理方式：
·被叫是未申请CID服务的用户时，不传送任何信息；
·被叫是CID用户时，主叫标志是“Y”时，传送“P”；
·被叫是CID用户时，主叫标志是“X”时，传送“主叫号码+时间+日期”；
·被叫是110，119，120，122等特服用户时，无论主叫标志是“X”还是“Y”均传送主叫号码的信息。
终端交换机在传送主叫号码信息前，还要根据被叫用户目前所处的状态，采用不同的传送序列和格式。以保证传送能顺利进行。
（1）被叫话机在挂机状态
对于采用移频键控方式的交换机，终端交换机将主叫号码信息在第一次振铃和第二次振铃间隔期间，将主叫号码信息以移频键控（FSK）的方式传送给被叫用户终端设备。
（2）被叫话机处在通话状态
当被叫用户登记某些业务（如呼叫等待）时，若被叫用户处在通话状态下，则终端交换机仍可向被叫用户传送主叫信息。（也就是如今多卡多待手机可以同时接听、拨打所依靠的条件。）
例如，具有CID功能的用户乙与用户甲通话时，又有用户丙呼叫用户乙，则在用户乙终端设备上显示用户丙的识别信息。
…… 省略无关内容 ……
来电号码显示实际上是现代电信交换网络可以提供的一项服务业务。就其机理而言，是指交换机对用户提供来电号码专用格式的数据的传送，而用户终端利用符合数据解码格式要求的端机进行接收和显示。
当交换机发出第一次振铃信号后，紧接着发出一串调制信号（现用的主要有FSK和DTMF两种格式的信号），此信号包含着拨号方的电话号码、日期、时间、姓名等信息。
来电号码显示器在每一次振铃信号的唤醒下，开始接收FSK信号，经解码芯片（如Motorola 的RC145447）获得其中信息，由单片机进行格式处理并在屏幕上显示出来。
同样，若传输过来的是DTMF来电号码信息，只需由DTMF解码芯片来进行数据解码，即可显示DTMF的来电号码。
…… 省略无关内容 ……

以上就是电话通讯协议的极少一部分内容，资料太长，各位看的是不是有点晕了，没关系，我画个简单的图给大家解释下。
其实嘛，这个玩意儿和互联网通讯协议有很多相似的地方，我画个图：

```text
主叫 → 电话线路 → 终端交换机（主叫的网关） → 运营商骨干网络 → 终端交换机（被叫的网关） → 电话线路 → 被叫
```
各个设备的信息显示权限如下：
主叫：可以控制是否向被叫用户传送自己的号码，也就是手机系统设置的那个“隐藏号码”功能，但是该功能需要运营商支持，但是现在的运营商都是默认传输的，所以是个摆设……
终端交换机（主叫的网关）：有权控制是否发送主叫号码（110，119，120，122等特殊用户除外，必须发送！），并且可以为所欲为的修改，当然，正规运营商的机器是不会这么干的……
运营商骨干网络：传输数据，不作任何修改。（公安监听电话就在此处哦，亲~）
终端交换机（被叫的网关）：权限同上，但是这里是判断被叫有没有开通来电显示功能，开通了就发，没开通就不发。是的，没错，就尼玛这个破功能，运营商每个月还收个3元的来电显示费用，卧槽……
被叫：判断是否有附加信息数据包，有就显示，否则不进行任何操作……
我们从以上的资料中得知，电话通讯网络不是依靠电话号码进行用户识别的，而来电显示功能则只是，在交换机发出第一次振铃信号后，附加了包含一个主叫用户信息的数据包而已，包含着拨号方的电话号码、日期、时间、姓名等信息，来电号码显示器在每一次振铃信号的唤醒下，开始接收FSK信号，经解码芯片获得其中信息，由单片机进行格式处理并在屏幕上显示出来。
就好像在互联网中通讯的时候，我向某个QQ号发送消息的时候，我可以选择是否发送昵称（电话号码等信息），而且这个昵称是完全可以修改的。
既然知道了传输原理，那么改号软件是如何做到的呢？？？
这里就要了解一下VoIP（IP电话、网络电话）的知识了……

VOIP：[http://baike.baidu.com/view/1475.htm](http://baike.baidu.com/view/1475.htm)
VoIP（Voice over Internet Protocol）简而言之就是将模拟声音讯号（Voice）数字化，以数据封包（Data Packet）的形式在 IP 数据网络 (IP Network）上做实时传递。
VoIP最大的优势是能广泛地采用Internet和全球IP互连的环境，提供比传统业务更多、更好的服务。
VoIP可以在IP网络上便宜的传送语音、传真、视频、和数据等业务，如统一消息、虚拟电话、虚拟语音/传真邮箱、查号业务、Internet呼叫中心、Internet呼叫管理、电视会议、电子商务、传真存储转发和各种信息的存储转发等。
VoIP相对比较便宜，为什么？
VoIP电话不过是互联网上的一种应用，网络电话不受管制。因此，从本质上说，VoIP电话与电子邮件，即时讯息或者网页没有什么不同，它们均能在经过了互联网连接的机器间进行传输。这些机器可以是电脑，或者无线设备，比如手机或者掌上设备等等。
为什么VoIP服务有些要收钱，有些却免费？
VoIP服务不仅能够沟通VoIP用户（就像QQ语音聊天一样），而且也可以和电话用户通话，比如使用传统固话网络以及无线手机网络的用户。对这部分通话，VoIP服务商必须要给固话网络运营商以及无线通讯运营商支付通话费用。这部分的收费就会转到VoIP用户头上。网上的VoIP用户之间的通话可以是免费的。
近年来，网络通信势不可挡，qq、飞信等即时通讯软件冲击着传统的电话通信方式，从而也造就了很多网络新贵，众投资者企望在网络通讯中分一杯羹。继qq、飞信等软件之后，近年来开发的网络电话，被企业和个人广泛应用于国内外长途通话中。
与此同时，近年来一些网络电话“话吧”在学校、居民住宅区、工业区等迅速兴起。与几年前兴起的传统“IP公话超市”不同的是，网络电话的运营成本更为低廉，且进入门槛更低。只要一台电脑、一条宽带、几台电话机加上一个计费软件就可以操作，网络公司向加盟者或者运营商提供技术支持即可。由于像平常打电话一样方便，网络“话吧”迅速占据中低收入和外来打工人员的市场，并对传统电话业务形成冲击。
因为成本低廉，市场广阔，VOIP成为一种“暴利”的投资项目，但由于没有政策支持，因此仍然存在运营和管理上的漏洞，发展前景尚不明朗，投资需谨慎。经过几年的发展，虽然网络电话被广泛使用，但网络电话业务目前还处于“灰色地带”，法律没有限制也没有允许，而市面上出现的网络电话“话吧”也并没有营业执照。另外，网络电话本身也有先天缺陷，通话质量受到网络好坏的影响，停电时候无法使用，清晰度上也与传统的固话有差距，其次，网络电话还存在被偷听偷录的风险。
…… 省略无关内容 ……

又是很长的一段资料，各位又看的懵了吧，呵呵呵，我用简单的语言概括下……
其实VoIP就是网络语音聊天，把音频数据通过互联网从一台电脑传输到另一台电脑，无国界、远程传输，就像QQ语音一样，双方都装个软件就行了……
那么您可能会问了：二货！你胡扯什么呢？你扯了这么多，这尼玛和改号软件有毛关系？？？？？？
莫急，莫急，你马上就豁然开朗了！！！！（估计聪明的读者已经想到了！　↖(^o^)↗）
为了清楚地描述，我再来画个图：
VoIP：

```text
用户A → 计算机 → ISP运营商接口 → 互联网骨干网络 → ISP运营商接口 → 计算机 → 用户B
```
尼玛，这个运行模式就不解释了吧？你丫天天在用，俗称：上网！！！！
亲，还记得电话网络的图吗？？
电话网络（稍微简化了下）：

```text
用户A → 电话 → 主叫的网关 → 运营商骨干网络 → 被叫的网关 → 电话 → 用户B
```
哦呵呵呵呵，如果VoIP和电话，这两个完全不相干的网络结合的话，会发生什吗事呢？
那么，神奇的地方来了！！！亲，看图：

```text
用户A → 电脑 → 上网接口 → 互联网骨干网络 → 上网接口 → 电脑 → 用户B ↘ ↗ 上车、下车网关 ↗ ↘ 用户C → 电话 → 主叫网关 → 运营商骨干网络 → 被叫网关 → 电话 → 用户D
```
上车、下车网关：
也称为中继网关、落地网关，通过 IP 接口与用户端的语音接入网关相连，通过E1接口与局用程控交换机相连。
中继网关将 IP 分组包与 PCM 的相互转换，从而实现语音接入网关同公关电话网 (PSTN) 的互连互通。
将一路呼叫从传统电话线转接到IP网上的网关一般称为上车网关，而将IP网上的呼叫转接进电话网的那个则称为下车，或者落地网关。
该网关需要从电话运营商处申请，然后连接你的服务器即可。
现在，电话网络和互联网可以互通互联了。
再回到改号的话题上，既然你无法控制电话网络网关，那么从网络核心设备（落地网关）上进行呼叫，我们只要在信令上送出一个虚拟的号码，被叫的所在地设备便会认为这是真实的主叫号码，所以它给被叫的来电显示，就是我这个虚拟的号码，这是一个很简单的网络欺骗。
移动运营商当然可以做到，但我相信没有哪个运营商会这么做，但我们应该看到，与运营商的网络设备相连接的还有许多服务提供商（SP），他们数量众多，良莠不齐，难说不会有人违规操作；当然还有其它运营商的来话，如固定电话网络的来电，或国外的来电，他们也都可以做到。
这算是运营商网络的一个漏洞，而且还不好修补。
流程可以简单的概括为：
1、首先在智能手机或电脑上预置一个VoIP软件，该软件指向某预置网关，该网关为非法落地网关。
2、并且该网关允许并接收客户端发送指定主叫号码，并将此号码传递给被叫号码所属网关。
3、拨电话吧，随意伪造号码。
并且不受110等特殊号码限制，因为从“源网关”处，就已经伪造了号码，所以你可以给110打一个来电号码是110的电话……
扯了一大堆，核心的东西就在这个落地网关上！不只是互联网，不同的网络之间通讯都有类似的网关。
这个网关夹在主叫方与电信公司的网关中间，修改主叫号码后再把修改结果送入电信公司的网关系统中。
他们自己有一个平台，这个平台与运营商有接口，或者与国外的一些IP运营商存在接口。
如果你需要，首先会给你的电脑或手机装一个软件，建立一个与他这个平台的通道，但你使用这项功能的时候，就等于接入了他的平台，他的平台再帮你实现这模拟任意号码呼叫。
最后，总结一下：
“来电显示修改”是利用了网络IP电话网关技术，先来看一下普通座机上来电号码显示的原理，首先交换机传送电话拨打方的包含来电号码的数据，而接听方户终端进行接收和显示，当然这些数据必须符合专用的解码格式。
当交换机发出第一次振铃信号后，便接着发出一串调制信号，此信号包含着拨号方的电话号码、日期、时间、姓名等信息。
来电号码显示器在每一次振铃信号的唤醒下，开始接收信号，经解码芯片获取其中的信息，最终处理过后在屏幕上显示出来。
这样一来，拨打方发出呼叫后，首先要传至电信公司的交换系统，通过该系统的身份核查后，被叫方才能接收到信号。
“平台”实际上就是网络IP电话，电信公司设置的“电话网关”就相当于传统通话的交换系统。
所谓的来电显示修改，也制作了一个网关，夹在主叫方与电信公司的网关中间，用自己的网关随意修改主叫号码，再把修改结果送入电信公司的网关系统中。目前，兜售修改软件的公司大都用的这个原理。
由于这些电话是通过中转平台或者电脑软件拨打，并不是两方之间的连接，因此只要按显示的号码拨过去，对方是无法接听的。
目前，互联网上的所有网络电话，例如：Skype、UUCall 等公司，全部都可以做到修改来电号码，但他们为了合法，所以只允许你修改为你自己的手机号码，并且要求手机短信验证后，才可以修改。
实际上，他们的管理员可以任意修改……
而这些伪造来电号码的公司，和这些网络电话公司的运行模式完全一致，只不过他们是接非法业务……
为什么近两年这种伪造来电号码的非法业务越来越多？
因为现在网络越来越发达，速度越来越快，成本越来越低，上手简单，而且又可以和电话网络互通互联，这比从电话公司处伪造号码（最早的伪造方式）容易的不是一点半点，促进了这类公司的发展，他们和雨后春笋一样冒了出来……
如果从网络安全的角度来讲，传统的以手机、电话号码作为验证用户身份的方式（例如某某手机密保），已经彻底崩溃了……

## Replies
