借助树莓派上演“窃听风云”

2019 年 7 月 18 日 FreeBuf

0x00 前言

在N年前看《窃听风云》时,里面的窃听环节就深深吸引着我,让我记忆深刻。

在N年前对于普通的我们想要实现远程窃听技术需要购买昂贵的设备才能实现。

但最近科技发展飞速,一般家庭宽带的网速已经达到了100M,同时手机的4G已经普及,5G也开始商用了(加油华为,加油China),在这样的环境下实现电影里面的窃听技术就比较容易得多了。

下面请随我一起开始“窃听”之旅。

0x01 所需材料

1.树莓派


2.USB麦克风

3.VPS服务器

一般家庭的宽带都不是公网IP,外网无法直接连接,所以需要使用VPS服务器来实现FRP内网穿透,这样就可以直接访问家庭内部主机了。

4.手机

5.VLC App

VLC 是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD、音频 CD、VCD 及各类流媒体协议。

6.耳机

0x02 技术介绍

本文所使用的到的主要技术有:使用nginx+rtmp搭建音频直播流媒体服务器和FRP 内网穿透。

什么是nginx?

Nginx 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。

什么是RTMP?

RTMP协议是Real Time Message Protocol(实时信息传输协议)的缩写,它是由Adobe公司提出的一种应用层的协议,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题。随着VR技术的发展,视频直播等领域逐渐活跃起来,RTMP作为业内广泛使用的协议也重新被相关开发者重视起来。

什么是FRP?

FRP是fast reverse proxy的缩写,简单地说,FRP就是一个反向代理软件,它具有体积轻量且功能强大特点,可以使处于内网或防火墙后的设备对外界提供服务。

0x03 环境搭建

3.1 在树莓派上使用nginx+rtmp搭建音频直播流媒体服务器

1.安装所需要的依赖

sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev

2.安装nginx和rtmp

wget http://nginx.org/download/nginx-1.17.0.tar.gzwget https://github.com/arut/nginx-rtmp-module/archive/master.ziptar -zxvf nginx-1.17.0.tar.gzunzip master.zipcd nginx-1.17.0./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-mastermakesudo make install

3.修改nginx配置文件

执行sudo nano /usr/local/nginx/conf/nginx.conf,追加如下内容。

# RTMP协议rtmp {   # 创建一个服务,监听1935端口,这个是RTMP默认的端口    server {        listen 1935;   #默认端口        chunk_size 4096;        # 创建了一个名为live的应用, 支持直播        application live {            live on;         }    }}
4.启动nginx+rtmp流媒体服务器
sudo /usr/local/nginx/sbin/nginx
5.安装ffmpeg
sudo apt install ffmpeg

6.将usb麦克风插入到树莓派的usb口,启动ffmpeg从usb麦克风实时采集音频,并推流到树莓派上搭建好的nginx+rtmp流媒体服务器上。

ffmpeg -f alsa -ac 2 -i hw:1,0 -ar 44100 -f flv rtmp://192.168.1.150/live/audio

参数说明

主要参数:

-f 设定输出格式

-i 设定输入流(hw:1,0为外接的usb音频采集卡设备,hw:1,0的1指的是第一个外部设备,因为树莓派内部没有声卡,所以只能使用外部的usb音频采集卡);

-ar 设定采样率(因为输出为flv格式,所以采样率只能选择44100,22050,11025这三种);

注意:192.168.1.150为树莓派的IP地址。

7.在windows客户端中使用VLC软件打开网络串流,地址为“rtmp://192.168.1.150/live/audio”,即可收听到树莓派麦克风上捕获到的声音。

当前,可以在树莓派相同的wifi网络下,可以实现窃听,如果想要实现在任何地方的外网收听,还需要实现下面的FRP内网穿透。

3.2 在树莓派上搭建FRP内网穿透服务

3.2.1 服务端 - frps(VPS服务器)

1.下载程序

我的VPS服务器是unbuntu系统,使用的是arm64架构,所以需要下载arm64架构的frp软件。

wget --no-check-certificate https://github.com/fatedier/frp/releases/download/v0.20.0/frp_0.20.0_linux_amd64.tar.gz

解压

tar -xzvf frp_0.20.0_linux_amd64.tar.gz

新建文件夹

sudo mkdir -p /usr/local/frp

移动

sudo mv frp_0.18.0_linux_amd64 /usr/local/frpcd /usr/local/frp

确保frps程序具有可执行权限

chmod +x frps

说明:目录下只主要关注4个文件,分别是frpc、frpc.ini和frps、frps.ini,前者两个文件是客户端所关注文件,后者两个文件是服务端所关注两个文件。

2.配置程序

首先删掉frpc、frpc.ini两个文件,然后再进行配置,nano ./frps.ini:

[common]bindport = 9000           #与客户端绑定的进行通信的端口auto_token = hell.world      #客户端连接服务器端的口令

验证frps是否安装成功:

./frps -c frps.ini

如果没有出现错误提示就说明配置没有问题,可以正常使用。

接着按下Ctrl + C终止程序运行。

3.使frps开机启动

编辑/etc/rc.local文件,将启动那句命令加到exit 0语句之前(如果有):

nohup /usr/local/frpfrps -c /usr/local/frp/frps.ini &

3.2.2客户端 - frpc (树莓派)

1.下载FRP:

wget https://github.com/fatedier/frp/releases/download/v0.20.0/frp_0.20.0_linux_arm.tar.gz

2.修改frpc.ini文件:

[common]
server_addr = XXX.XXX.XXX.XXX #VPS服务器的公网IP
server_port = 9000 #与服务端bind_port一致
auto_token = hello.world #客户端连接服务器端的口令
[RTMP]
type = tcp #连接协议
local_ip = 127.0.0.1 #内网服务器ip
local_port = 1935 #RTMP默认的端口
remote_port = 6000 #自定义的访问内部RTMP端口号

3.启动frpc:

执行./frpc  -c ./frpc.ini启动,这是前台启动,后台启动命令为:

nohup ./frpc -c ./frpc.ini &

到此,FRP内网穿透就搭建完了。

0x04 开始远程监听

使用手机下载VLC Media Player,并将耳机连接到手机上(除非你想让窃听的内容被周围的人听到,当然也可以不连接耳机)。

手机上打开VLC软件,打开网络串流,地址为“rtmp://XXX.XXX.XXX.XXX:6000/live/audio”。

说明:XXX.XXX.XXX.XXX为VPS服务器的IP地址。

稍等一会,在耳机中即可听到远程的实时声音。注意,声音是有延迟的,对于我的网络大概延迟2s左右,具体需要自行测量。

备注:如果连接不成功,可以关闭VLC软件,重试几次即可。

0x05 结束语

当从耳机中听到远程的声音时,内心是无比激动的,希望我的这份愉悦与大家一起分享。

喜欢的话,支持一下吧。

*本文原创作者:xutiejun,本文属于FreeBuf原创奖励计划,未经许可禁止转载

精彩推荐


登录查看更多
1

相关内容

Nginx(发音同 engine x)是一款由俄罗斯程序员 Igor Sysoev 所开发轻量级的网页服务器、反向代理服务器以及电子邮件(IMAP/POP3)代理服务器。Nginx相较于 Apache、lighttpd 具有占有内存少,稳定性高等优势,并且依靠并发能力强,丰富的模块库以及友好灵活的配置而闻名。
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
【Uber AI新论文】持续元学习,Learning to Continually Learn
专知会员服务
36+阅读 · 2020年2月27日
阿里巴巴达摩院发布「2020十大科技趋势」
专知会员服务
106+阅读 · 2020年1月2日
专知会员服务
115+阅读 · 2019年12月24日
【机器学习课程】Google机器学习速成课程
专知会员服务
164+阅读 · 2019年12月2日
Keras作者François Chollet推荐的开源图像搜索引擎项目Sis
专知会员服务
29+阅读 · 2019年10月17日
通过Docker安装谷歌足球游戏环境
CreateAMind
11+阅读 · 2019年7月7日
英伟达又现神操作,程序员也能成画家!
大数据技术
7+阅读 · 2019年4月24日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
去哪儿网开源DNS管理系统OpenDnsdb
运维帮
21+阅读 · 2019年1月22日
如何用GitLab本地私有化部署代码库?
Python程序员
9+阅读 · 2018年12月29日
Android P正式发布,你需要尽快做适配了
前端之巅
3+阅读 · 2018年8月7日
朋友圈新功能,治愈大波强迫症患者
腾讯
4+阅读 · 2017年7月14日
Arxiv
3+阅读 · 2018年10月25日
Arxiv
12+阅读 · 2018年1月28日
Arxiv
5+阅读 · 2017年11月13日
VIP会员
相关资讯
通过Docker安装谷歌足球游戏环境
CreateAMind
11+阅读 · 2019年7月7日
英伟达又现神操作,程序员也能成画家!
大数据技术
7+阅读 · 2019年4月24日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
去哪儿网开源DNS管理系统OpenDnsdb
运维帮
21+阅读 · 2019年1月22日
如何用GitLab本地私有化部署代码库?
Python程序员
9+阅读 · 2018年12月29日
Android P正式发布,你需要尽快做适配了
前端之巅
3+阅读 · 2018年8月7日
朋友圈新功能,治愈大波强迫症患者
腾讯
4+阅读 · 2017年7月14日
Top
微信扫码咨询专知VIP会员