第一作者简介:袁心宇,男,山东济南人,学士,研究方向为电子物证检验技术、网络犯罪侦查。E-mail: tomyxy@qq.com
家用路由器是一种用于网络互联的设备,常用于当代家庭、公司、企业等小型场景。本文将探讨家用路由器电子数据取证方法,为传统案件和网络犯罪案件侦查提供线索。本文对家用路由器的定义、功能、厂商、硬件架构、软件以及在犯罪侦查中的作用进行了总结。在此基础上梳理了家用路由器的取证方法,包括动态取证和静态取证。动态取证介绍了运行状态下家用路由器的信息搜集、权限获取;静态取证介绍了被固定为证据的家用路由器的信息搜集、连接方式、数据提取和固件分析。
SOHO (small office/home office) router, a common network device, is universally used in the household, company, enterprise and other scenarios so that it can provide clues for both the detection of traditional cases and the investigation of cybercrime. This article summarizes the SOHO router about its definition, functions, vendors, hardware architecture, software and the role in criminal investigation. Furthermore, two forensic methods, dynamic and static, are sorted out for investigation of such kinds of router. The dynamic handling involves with the information collection and authority acquisition when the SOHO routers are running while the static deals with the information gathering, connection methods, data extraction and firmware analysis from the SOHO routers that are riveted as evidence.
路由器是互联网中主要的节点设备, 因路由器漏洞数量多、危害严重等特点业已成为黑客攻击的目标, 攻击者可以利用受攻击的路由器进行进一步渗透和破坏, 常见后续攻击有DDOS攻击、穿过防火墙及IDS系统等防护措施进行内网渗透、中间人攻击。其中, 家用路由器使用范围广, 用户安全技能水平参差不齐, 故家用路由器受攻击的可能性更高。通过对家用路由器的取证可以获取一些容易忽视的信息, 包括分析路由器被入侵的方式和入侵痕迹、发现黑客种植的后门、分析连接路由器记录、了解启动时间等; 同时, 在普通案件侦查中对家用路由器取证可以起到一定的辅助侦查作用, 如通过对黑名单、白名单、dhcp记录分析发现可疑设备及人员, 通过监听流量进行动态侦查等。因此对家用路由器的电子数据取证就成了不可回避的技术问题, 本文探讨了家用路由器电子数据取证方法。
1.1.1 家用路由器的界定
家用路由器一般是指用于连接家庭或其他小型场景下局域网和互联网的通讯设备, 它可以通过提供无线热点等方式, 为终端设备(如手机、笔记本电脑)提供互联网接入服务。
1.1.2 家用路由器的分类
家用路由器的使用日益广泛, 其分类方式很多, 且随着路由器技术的发展, 分类方式也在不断改变。按网络中所处的位置分类, 通常把路由器分为边界路由器和中间节点路由器。边界路由器处于网络边缘, 用于不同网络路由器的连接; 而中间节点路由器则处于网络的中间, 通常用于连接不同网络, 起到数据转发的作用。按射频频段分类, 分为单频路由器和双频路由器。单频路由器的频段在2.4 GHz, 双频路由器的频段包含2.4 GHz和5 GHz。按用户能否进行智能化管理分类, 分为智能路由器和非智能路由器。按接口转发性能分类, 可以分为线速路由器和非线速路由器。完全可以按传输介质带宽进行通畅传输, 基本上没有间断和延时的称为线速路由器, 反之则称为非线速路由器。
1.1.3 家用路由器的功能
家用路由器的主要功能包括网络互连、数据处理、网络管理[1]。常规使用场景为家庭、办公场所、娱乐休闲场所, 为用户提供无线互联服务; 在某些特定场景下家用路由器可用于建立局域网, 实现内网的搭建、局域网站的搭建等。
1.1.4 家用路由器的主要品牌
中关村在线发布的《2018年上半年无线路由器市场研究报告》[2]结果中显示, 2018年上半年中国无线路由器市场的排名第一的品牌依旧是“ TP-LINK” , 市场形成了“ 一超(TP-LINK)、一大(斐讯)、五强(华为、腾达、华硕、网件、小米)” 的格局。
1.2.1 中央处理器(CPU)
中央处理器(central processing unit, CPU)是一块集成电路, 是路由器的运算和控制中枢。在实际的商用中, CPU大多集成在SoC中, SoC(System on Chip)是一个有专用目标的集成电路, 包含完整系统并有嵌入软件的全部内容。当前路由器SoC的架构主要有MIPS、ARM和Intel(x86)。
1.2.2 闪存(Flash)
闪存(Flash)是可读可写的存储器, 是路由器的内部系统存储空间, 作用是保存操作系统及配置文件, 它的特点是不论是否加电都不会丢失数据。取证过程中如果不能直接进入路由器系统, 可以直接拆取或连接闪存进行数据提取。
1.2.3 随机存取存储器(RAM)
随机存取存储器(random access memory, RAM)又称作“ 随机存储器” , 是与CPU直接交换数据的内部存储器。它保存的是操作系统或其他正在运行中的程序的临时数据等, 但是当断掉电源后就会丢失数据。因此在取证过程中应尽量保持不断电。
目前市面上的家用路由器按照运行的系统大致可以分为:基于嵌入式Linux的分时操作系统和基于Vxworks之类的实时操作系统[3]。绝大多数使用基于Linux的分时操作系统, 故本文主要研究此类。无线路由器软件系统也称固件, 是运行于操作系统之上的操作系统软件, 路由器厂商依据自己的硬件开发适配自己机型的固件。除了路由器出厂时自带的固件以外, 开源的第三方固件发展在近年来也十分迅速, 常见的开源第三方固件有:OpenWrt, DD-WRT, Tomato, Merlin等。
对家用路由器进行动态取证是指在路由器处于正常运行状态下的取证, 目标不仅仅在于路由器硬件本身, 也在于路由器运行过程中产生和传输的数据。进行动态取证的方式有两种, 一种是远程控制操作, 一种是物理接触操作。远程控制操作是本段的重点, 物理接触操作方法与之相似, 主要不同在于连接方式, 具体可以参考静态取证。
对家用路由器进行动态取证首先是要确定能够访问到该路由器, 如果该家用路由器能通过公网访问, 那么可以直接通过IP访问到家用路由器; 如果不能, 则需要连接上该家用路由器在局域网内进行操作, 常见的获取密码的方式有利用Aircrack-ng进行破解、利用WiFi万能钥匙等工具查询、利用社会工程学获知等。家用路由器在局域网中常见IP地址为192.168.1.1或192.168.2.1, 在windows下可以在命令行中使用ipconfig查看网关IP地址。对于家用路由器的远程信息搜集可以使用nmap或zenmap进行扫描, zenmap有图形化界面, 更方便操作, 通过扫描可以获知端口开放信息、系统信息等关键信息。还有一些专门的扫描工具辅助WiFi渗透攻击, 例如routerscan, 通过它可以获得家用路由器的开放端口、登录用户名和密码、家用路由器名称或品牌型号信息、无线信号名称(SSID)、无线连接密码、无线加密方式、PIN码、内网IP等有价值的信息。也可以使用其他大型扫描器进行扫描, 如nessus、awvs等, 可以系统地收集信息, 甚至发现漏洞。
2.2.1 基于家用路由器web后台
厂商为方便用户对家用路由器进行配置, 往往会建立一个图形化web配置界面, 但是由于web层面安全漏洞导致的问题可能会使路由器的脆弱性增加。常见的web漏洞存在于路由器的web配置界面中, 常见的攻击方式有:远程命令执行攻击、密码绕过漏洞攻击、弱口令猜解攻击等。借助这些攻击方式可以通过注入恶意代码等方式获取到路由器的权限, 引发持续的威胁。
2.2.2 基于家用路由器缓冲区溢出型漏洞及固有后门型漏洞
在家用路由器固件的设计和编写过程中可能会有一些疏忽、逻辑失误等问题, 常见的漏洞就是缓冲区溢出型漏洞, 其产生原因是没有做好对输入数据的检测, 向缓冲区填充数据时超过了缓冲区本能承受的容量, 导致数据溢出覆盖其他内存空间的数据, 导致其他内存空间的内容可控, 进而导致路由器被控制。另外, 某些厂商或程序员可能会因为一些原因特意留下后门, 方便自己以后对设备的控制, 攻击者可以通过对二进制程序审计发现后门的使用方法, 进而发起对该类型设备的攻击。常见的家用路由器固件漏洞很多已经公布在了网络上, 如http://routerpwn.com/, https://www.exploit-db.com/, 可以在网络上查询相关的脚本直接使用。
2.2.3 利用社会工程学
除了以上所阐述的攻击方式, 攻击者在实际渗透过程中会采用社会工程学进行攻击, 常见的方式有直接同管理员取得联络, 通过话术等方式骗取路由器密码, 获取控制权限; 搭设钓鱼网站, 诱导用户输入账号密码在后端进行记录。
2.3.1 在家用路由器植入后门
由于直接在内存写入后门会在断电后自动消失, 因此可以在flash中写入后门, 然而flash芯片往往是不可修改写入的, 故需要将编译好的后门放置在固件中, 进行重新打包, 修改校验头, 通过web管理界面中软件升级功能上传修改后的固件, 实现后门的常驻, 这样即可对路由器进行持续性控制进行数据获取等操作。
2.3.2 修改DNS配置信息
对DNS配置信息进行修改, 可以对用户上网内容进行嗅探、钓鱼、甚至流量劫持, 从而发起针对性攻击。例如攻击者可以修改DNS服务器, 配置自己搭建的服务器, 这样就可以将用户访问的网址进行记录, 也可以修改目标IP达到钓鱼欺骗的目的, 甚至可以对HTTP数据包进行修改, 加入探针, 之后直接加入恶意代码获取内网权限, 进行远程勘验。
2.3.3 对路由器进行流量取证
流经路由器的流量, 就是网络设备通过路由器连接网络时上传和下载的流量, 通过对这些流量进行分析, 我们可以获知WiFi使用人员登录的网站、传输的文件等一系列数据, 可能对于案件侦查具有重要意义。远程对家用路由器流量取证方式如下:
第一步, 在服务器上安装pptpd, 在路由器配置VPN客户端。不同品牌的路由器配置VPN的方式不同, 具体可以在互联网上进行查阅, 本文以Padavan固件为例, 在VPN设置页面输入用户名、密码等信息, 保存并应用后, 连接成功。
第二步, 在PPTP服务器进行抓包。查看网卡。命令:ifconfig。如图1, ppp0即为我们所需要抓包的网卡。之后使用tcpdump进行抓包, 命令:tcpdump -i ppp0 -w test.cap。如此, 在当前路径下生成的test.cap即为我们抓包得到的数据。
第三步, 对于收集到的数据包需要进一步进行分析, 使用流量分析工具, 如wireshark, 进行针对性的分析。由于数据量一般都比较大, 故需要取证人员善用过滤、善用大数据分析以获得更好的效果。
家用路由器的静态取证是指对于已经获取到的家用路由器直接进行数据提取和分析。
第一, 了解家用路由器的型号。可以通过查看家用路由器外观确认家用路由器型号。家用路由器的底部常有其品牌、型号、MAC地址、登录地址、用户名及密码、序列号、电源规格等, 利用这些信息可以直接通过搜索引擎或厂商用户手册等获取到路由器web配置页面操作方式、拆机连接方式、进入BootLoader方式等。通过网站https://wiki.openwrt.org/toh/start可查询多种型号路由器的硬件信息及物理连接方式。
第二, 确定该家用路由器的WiFi热点名称, 如果有多个信号, 可以直接询问路由器所有者, 或者通过距离路由器远近测信号强度予以确定。
第三, 使用多种WiFi密码共享软件查看其密码是否泄漏, 常见软件如“ WiFi万能钥匙” 。WiFi名称后有钥匙符号的WiFi是可以直接连接的, 连接成功后可以在已root的安卓手机中访问/data/misc/wifi/wpa_supplicant.conf直接查看密码。在WiFi密码共享软件中出现WiFi被分享的时候, 应当格外注意该路由器是否有其他人“ 蹭网” 。
第四, 如果有曾经连接过路由器的计算机也可以通过该计算机获得WiFi密码。以Windows10为例, 在命令行输入netsh wlan show profiles, 可以获得计算机上连接过的WiFi名称, 然后使用命令netsh wlan show profile name=” WiFi名称” key=clear, 即可看到密码。
家用路由器的连接方式有很多种, 常见的有无线连接、LAN口连接、UART接口连接、console口连接。在实际取证中, 如果有console口则优先连接console口, 但由于家用路由器一般不具备该接口, 故常规操作应当先尝试操作更简单的LAN口连接, 如无LAN口则使用无线连接, 若这两种方式都不能获取到所需要的数据, 如路由器没有开启telnet而无法执行shell命令, 则需要拆机后连接UART接口进行串口通讯。因连接UART接口较为复杂, 故下文对此着重阐述。
3.2.1 无线连接
无线连接方式是用户使用无线路由器最常使用的功能, 取证工作时可以首先获取家用路由器密码, 再通过计算机无线连接功能直接与路由器连通。这也是日常使用无线路由器的常规方法。
3.2.2 LAN口连接
常规情况下, 可以直接使用双绞线将家用路由器的LAN口与计算机进行连接, 计算机会自动配置网络。有部分路由器要求必须通过LAN连接而非无线连接才能进行一些如telnet等的高级操作。
3.2.3 电路板上TTL电平的UART接口连接
UART(Universal Asynchronous Receiver/Transmitter)接口和JTAG(Joint Test Action Group)接口都是电路板上的调试接口。UART接口按电平标准分为TTL、RS-232等, 路由器多采用TTL电平的UART接口, 其在电路板上的一般形态为4针串口, 有时上面还带有杜邦插针。使用UART接口时要求路由器是主机, 要能够正常运行才能使用, 而JTAG接口则不然, 只要计算机下发命令, 芯片将无条件予以执行。但是, 由于芯片的引脚数量有限, JTAG一般都被复用作了其他功能, 因此在不参考专业资料的情况下难以观察和利用; 相反, 厂商为方便返修和调试, 会将TTL接口引出, 仔细观察电路板往往就可以找到接口, 因此, 在取证工作中建议直接使用UART接口连接。对于新款路由器, 厂商经常会关闭telnet等服务, 这时候就需要通过UART接口连接, 通过串口通讯, 可以直接进入到家用路由器的命令行终端, 方便下一步的操作。本文以斐讯路由器k2为例进行测试。
第一步, 拆解家用路由器, 图2中框选部分即为TTL接口。
第二步, 连接串口通讯模块。由于是TTL连接, 这里需要用到USB转TTL模块, 实验使用的是CH340G。安装驱动完毕后, 通过Secure CRT软件连接, 连接成功后会出现空白页面, 只有光标闪烁, 如此即证明连接成功。
第三步, 连接CH340G与路由器TTL接口。CH340G小板如图3所示。
使用杜邦线进行连接, 连接接口对应为:模块TXD连接路由器RX, 模块RXD连接路由器TX, 模块GND连接家用路由器GND或家用路由器其他接地线。家用路由器上可以焊接排针, 也可以用手或其他方式固定。连接成功后, Secure CRT会提示输入用户名和密码, 一般情况下默认用户名密码是如admin, root等弱口令, 输入后可以直接登录。如果无法得知密码, 就需要断电重启路由器, 但是要注意, 重启路由器会导致部分证据的消失, 要提前做好证据固定。在路由器重启时, Secure CRT可以看到启动过程, 以斐讯路由器k2为例, 如图4所示。
可以通过输入f和回车进入安全模式, 进入后得到路由器命令行控制界面。
3.2.4 console接口
商用路由器一般会有专门的console接口, 但家用路由器大部分都没有, 如果需要可以直接向相关厂商索要。
3.3.1 通过厂商提供的web界面提取
为方便家用路由器管理, 家用路由器厂商会为用户管理提供web管理端, 常见登录地址为http://192.168.1.1/, 具体以说明书或家用路由器底部的说明为准。登录后, 一般可以获得的数据有:当前互联网连接配置、当前连接用户、黑名单白名单、DHCP配置、WiFi名称及密码、系统日志、IP与MAC绑定等, 不同厂商提供的内容不同。
3.3.2 通过shell进行固件及日志提取
使用Secure CRT等软件可以视情况很方便地进行串口通讯、连接telnet或SSH服务, 在连接成功后即可获得路由器的shell, 直接执行shell命令。Busybox是一个集合了多个linux命令的工具, 第一步可以输入busybox查看支持的命令, 方便下一步操作。
第一步, 输入busybox, 查看可使用的命令。通过查看这些命令, 发现可以利用ftpput命令获取文件。
第二步, 在本地配置一个ftp服务器, 使得路由器与本地服务器可以相互通信。
第三步, 寻找需要的数据。首先要提取路由器flash芯片中的内容, 进入/dev中寻找, 发现mtdblock0等文件, 此即为路由器的镜像。使用ftpput命令:ftpput -u test -p test 192.168.2.22 mtdblock0 /dev/mtdblock0, 这样, mtdblock0就已经成功上传到本地服务器ftp目录下了, 传输其他文件同理。
3.3.3 通过BootLoader提取
经刷写过第三方固件的路由器常需要刷写第三方BootLoader, 常见使用的引导加载器有breed, 在可以进入恢复控制台的情况下使用本方法较为容易。不同型号的路由器进入BootLoader的方式不同, 常见的方式有开机时长按电源键5 s, 系统会自动进入BootLoader, 这时访问路由器web端口即可进入恢复控制台, 在固件备份选项卡中可以备份flash固件。此外, 通过Bootloader的命令行接口只能访问部分内存区域, 不能直接访问flash芯片。
3.3.4 对flash芯片进行物理提取
第一步, 拆机。通过热风枪将flash芯片拆下, 拆的时候注意控制温度, 防止把flash芯片烧毁。如果有条件的话, 可以直接使用导线连接flash芯片上8个触脚, 可以减少路由器损坏的可能性。
第二步, 使用XTW100编程器对flash芯片内容进行读取和保存, flash芯片安装方式如图5, 注意针脚的位置。
第三步, 使用XTW100配套软件进行芯片读取, 可以很方便地进行flash芯片的读取、保存、擦除、写入等功能, 使用读取和保存功能, 即可将固件提取出来。
在提取固件完毕之后, 应当对固件进行分析, 常见的分析工具有Binwalk、qemu、IDA Pro、Fireware Mod Kit、Squashfs-tools等, 对路由器固件分析的目的包括查找特定信息、查找漏洞和后门、分析木马等, 以对路由器进行全面分析。
3.4.1 固件分析环境的配置
推荐使用AttifyOS作为固件分析的环境, 它是一个已预先配置环境的基于ubuntu14.04的linux发布版, 拥有物联网(IoT)安全评估或渗透测试期间所需的工具, 集成了Binwalk、Attify Badge tool、Baudrate.py、Openocd、Flashrom、Spiflash.py、Firmware-Mod-Kit (FMK)、Firmware Analysis Toolkit (FAT)等软件。当然也可以手动在linux上安装用到的相关软件, 如:qemu、binwalk、IDA Pro等。首先下载和安装Virtual Box和Oracle VM VirtualBox Extension Pack, 然后下载AttifyOS(项目地址:https://github.com/adi0x90/attifyos), 使用Virtual Box打开即配置成功, 登录密码为attify123。
3.4.2 路由器固件的解压缩
根据上述环境搭建完毕后, binwalk是完整版(kali自带的binwalk非完整版, 如自行安装建议通过https://github.com/ReFirmLabs/binwalk下载, 安装完成后执行./deps.sh以完整安装), 故可以直接使用binwalk将提取到的固件解压缩, 解压命令为:$ binwalk -e 固件名称, 解压后生成_* .extracted文件夹, 文件系统在squashfs-root文件夹下。
3.4.3 目标信息的搜集
第一, 可以直接寻找关键文件查看, 如查看/etc/shadow、/etc/passwd, 也可以使用find、grep命令搜索关键字或利用正则表达式进行搜索, 如搜索psk、ssid可以搜索到WiFi配置信息。
第二, 可以使用qemu模拟程序运行, 以实际测试程序。如通过运行/bin/busybox可以看到路由器支持的命令。
第三, 可以使用IDA Pro分析关键程序或疑似木马程序, 将其反汇编成汇编指令和伪 C语言, 通过分析关键函数和流程, 发现固件存在的漏洞, 分析木马的功能及连接的服务器, 固定路由器被入侵的证据, 进而追踪嫌疑人。分析固件在必要的条件下也需要进行动态调试以提高效率。这既是重点也是难点, 需要取证人员有一定的二进制程序分析能力。
近年来, 黑客攻击家用路由器事件数量剧增, 家用路由器漏洞被大规模利用而形成僵尸网络的现象也频繁出现, 家用路由器安全将是网络安全关注的热点。而随着家用路由器被犯罪分子攻击和利用, 对于家用路由器的电子数据取证就成为了必须研究的方向。对于家用路由器的取证工作而言, 动态取证和静态取证是相辅相成的, 二者在实际侦查和取证工作中要灵活结合。虽然路由器品牌种类庞杂, 但是整体而言连接和使用方式都是相同的, 对于固件分析也大多都是基于linux, 文件结构上也有章可循, 可以凭借经验找到自己所需要的数据。但是, 路由器种类繁多, 其固件也存在差别, 这需要取证人员有一定的手动调试能力、嵌入式设备研究经验和软件分析能力, 这样才能够做到游刃有余, 充分发挥路由器在侦查中的作用和作为证据使用的价值。
[1] |
|
[2] |
|
[3] |
|
[4] |
|
[5] |
|