在美洲森林里要骄横为害的人,在王座上大概也不会善良很多;在王座上,恐怕他将找出学问、宗教为他对臣民所做的一切事情辩护,凡有胆敢提出怀疑的人,利剑立刻叫他们噤声。 – 伯特兰·罗素《西方哲学史》

前言

安全的兴趣由来已久。

近来在技术上的工作,主要与以下三个项目有关:

  • 树莓派
  • CodeLab Adapter
  • Home Assistant

因为考虑将这些项目产品化,这几个项目都有很强的可扩展性和连接能力,它们的安全性就是需要纳入考虑的话题。防御的最好方式之一是理解潜在的攻击行为,所以计划陆续抽出一些时间对它们做渗透入侵测试。

着重关注以下几个方面:

  • Linux 系统安全性
  • 暴力破解
  • 中间人攻击
  • IoT 的安全性
    • 工业物联网安全
    • MQTT
    • zigbee
    • wifi
    • bluetooth
  • web 安全
    • https
  • 逆向工程

以下是笔记。

前置工作

由于是内部测试,避免了很多麻烦,不必使用 tor 之类的工具保护自己。

准备使用 Kali Linux 作为工作环境,关于环境的搭建,可以参考此前的笔记:在 mac 虚拟机中安装 Kali Linux

我目前在用VMware,对应的虚拟镜像下载链接为:https://www.offensive-security.com/kali-linux-vm-vmware-virtualbox-image-download/

下载之后记得检验SHA256Sum

启动之后,默认的用户名密码是:root:toor

Kali Linux

Kali Linux 是基于 Debian 的 Linux 发行版,设计用于数字鉴识和渗透测试。

Kali 有 arm 版本,可用于树莓派。

Kali Linux 拥有超过 600 个预装的渗透测试程序.

Kali Linux 包含许多的安全工具,比如:

  • Aircrack-ng
  • Burp suite
  • Cisco Global Exploiter
  • Ettercap
  • John the Ripper
  • Kismet
  • Maltego
  • Metasploit framework
  • Nmap
  • OWASP ZAP
  • Social engineering tools.
  • Wireshark
  • Hydra
  • Reverse Engineering tools
  • Forensics tools like Binwalk, Foremost, Volatility e.t.c

流程

攻击的流程主要参考Metasploit 渗透测试指南, 很喜欢这本书。

Metasploit

Metasploit项目是一个旨在提供安全漏洞信息计算机安全项目,可以协助安全工程师进行渗透测试(penetration testing)及入侵检测系统签名开发。

维基百科对其介绍简明扼要,引用过来,方便读者参考:

使用Metasploit框架的基本步骤包括:

  • 选择并配置一个攻击代码(exploit, 利用漏洞来进入目标系统的代码);
  • (可选)检查目标系统是否会被此代码影响;
  • 选择并配置一个有效负载 (payload, 在成功进入后在目标系统上执行的代码;例如,一个远端壳层或一个VNC服务器);
  • 选择编码方式,使入侵预防系统,忽略已被编码的有效负载;
  • 执行攻击代码。

这种允许任何攻击代码和任何有效负载进行随意组合的模块化的结构是Metasploit框架的主要优势。用户可以通过不同的搭配在有限的漏洞下导入不同的负载。Metasploit框架可以通过添加模块实现扩展,允许用户,攻击代码作者和有效负载的作者专注于写出所需的功能,而无需处理其他问题。

选择攻击代码和有效负载需要目标系统的部分信息,比如其操作系统的版本和安装的网络服务。这些信息可被类似于Nmap的端口扫描和操作系统分析工具收集到。类似于Nexpose或Nessus的弱点扫描工具可以探测到目标系统的弱点。Metasploit可以导入弱点扫描数据并通过对比已发现的弱点和拥有的攻击代码模块来进行准确的攻击。

Armitage

Armitage是一个拥有图形用户界面的Metasploit管理工具,Armitage对初学者比较友好。

我当前的系统(2019-03)没有内置Armitage(早年的kali是自带的)),需要自行安装apt-get install armitage

安装完之后,可在Metasploit交互界面里启用armitage。


结下来让我们开始渗透之旅 :)

扫描网络

我们先来做下前期交互和情报搜集工作。

使用Zenmap简单扫描一下网络:192.168.31.0/24(Quick Scan),找到局域网里存活的主机(手机上的应用Fing也是很好的工具)。

Zenmap是Nmap的图形界面,如果想对扫描过程做更多精细操作,参考Nmap文档。一般来说,Intense scan可以满足一般扫描需求。

可以看出网络里有2个主机跑着VNC服务,它们是Neverland里的2台树莓派, 它们是主从关系 :)

也可使用fping -g 192.168.31.0/24来发现局域网存活主机(速度比较快)。

确定目标

确定我们的目标主机地址:rpi4.codelab.club,2个树莓派中的一台。

对目标主机做更全面的扫描(Intense scan, all TCP ports):nmap -p 1-65535 -T4 -A -v rpi4.codelab.club

扫描到了一些有用的信息:

我们发现了这个树莓派上开放的端口、端口上跑的服务、服务相关的技术栈(Python/Nginx)以及系统信息。

尝试ssh暴力破解

既然ssh服务是开放的,我们来试试暴力破解,说不定是默认密码或者弱密码。

打了捡便宜的心态,测试了一下pi:raspberry默认密码,没有捡到便宜。

我们使用著名的hydra来碰碰运气,hydra是著名黑客组织thc的一款开源的暴力密码破解工具,已经内置在Kali Linux中。

这儿使用hydra的图形界面来操作。

暴力破解的精髓是用户名/密码字典, 我们随便选择metasploit自带的字典/usr/share/wordlists/metasploit碰碰运气。

可惜,没有使用123456/admin/...之类的弱密码。 我们接下来把真实密码放在字典的最后一行来品尝暴力破解的快感:)

哈哈 成功爆破:

ps: 社会工程学往往是破解密码很好的思路,在这个意义上,优秀的黑客是一个具有心理学兴趣的人文工作者。

树莓派的安全性

树莓派是黑客的宠儿,黑客群体是它的铁杆粉,所以树莓派自身当然拥有很高的安全性。

树莓派的安全风险主要由使用者造成,弱密码首当其冲。

一些简单的策略可以大大提高树莓派的安全风险:

  • 使用最新的官方系统
  • 关闭非必要的服务和端口
    • VNC
    • ftp
  • 修改ssh端口,禁用密码登陆,使用证书登陆
  • 确保自定义服务的安全性

接下来我们便来开始聊聊自定义服务的安全性。

ps: 对树莓派更完整的渗透,留待后边讲到metasploit时再说。

渗透自定义服务

目前我们的树莓派里跑着两个自定义服务,正是我们的渗透目标。

  • CodeLab Adapter
  • Home Assistant

两者都对外提供web服务,又都与IoT有关,而IoT整个领域以安全漏洞多著称,我们接下来看看从它们身上能收获什么。据此思考如何提高它们的安全性。


waiting…

参考