黑群晖镜像安全一览

黑群晖镜像安全一览

2024-04-12 16:01:10 23点赞 125收藏 26评论

揭秘黑群晖世界:从风险到规避风险之路

黑群晖镜像安全一览

2024年04月16日 更新, 请参阅文章末尾。


1. 黑群晖入门

从19年开始, 装过五台黑群晖, 6.1.3、7.0.1、7.1.1、7.2.1, 引导包也是从最开始的50M到现在3G多大小。

黑群晖镜像安全一览

以前虽然也有考虑安全性, 但是毕竟便捷性在前, 因此也未仔细深究过, 突发奇想想看看包的变化, 才是大吃一惊。

简单的说, 你的电脑在你的家里,

花着你每天两块钱的电费,还有平均每天四块钱的网费,

运行着其它人的程序,甚至还去看你全家人的照片,

甚至通过你的nas访问你的手机、个人电脑, 刷你的信用卡。

黑群晖镜像安全一览

上面的流程都是打通的。 也就是说理论上如果攻击者想, 就能做到。

诸位, 黑群晖使用需谨慎,有条件请上正版。 没条件可以参考本文稍微调整一二(需要了解一定的技术)。

注:本文不贬低任何一位奉献者。



2. 黑群晖的风险剖析

最新安装的包是7.2.1:

黑群晖镜像安全一览

主要的文件变更来源于各个驱动或者插件, 例如如图:

黑群晖镜像安全一览

这也是引导程序越来越易用的原因。

但是, 驱动程序等是开源的, 贡献者可以在里面插入自己的代码, 参考最近的开源社区 xz 事件。

除此之外, 引导程序启动的时候本身可以执行一系列的脚本、安装一系列的程序,它们都可以以最高权限执行。

如上图中的ssh文件夹, 以及其他的一些内置的脚本、程序等,在你的nas启动之后, 攻击者可以很方便的访问你的电脑。

2.1 upnp

一般的路由器都是打开的, 群晖本身就有个upnp服务, 可以被nas上的服务调用(也包括攻击者) 简单的说这个服务可以让攻击者在任何时候访问你的nas。

2.2 ssh

也是如上图, sshd_config它支持让root用户直接通过ssh连接你的nas。 root 用户, 听名字就知道有多不安全了吧。

其配置: PermitRootLogin yes, 是可以允许配置了私钥了的root直接登录的。

2.3 ttyd

你用的攻击者的引导程序, 攻击者也可以在引导程序里面插入个远程webssh, 这个更简单, 有浏览器就能使用。

并且, 这个程序来源于大名鼎鼎的:pocopico,端口7681。

当然, 可能pocopico大神是为了调试方便, 此处不做评估。

此处因为发现之后直接iptables给它封了, 然后它就自己把自己kill了,暂时没有截图。

2.4 其它

使用Nmap扫描了下接口, 比较多, 并且因为是引导级别的, 启动的时候就可以hook内核了, 因此再看下去意义不大。

3. 解决(尝试)这些风险

首先, 解决是不可能解决的, 道高一尺魔高一丈, 尽可能预防把。

3.1 购买正版

正版不一定毫无问题, 但是大概率会好很多。

3.2 参阅博主的解决方案

1. 关闭路由器UPNP, 尤其是你的路由器有公网环境, 务必关闭!

2. 设置路由器过滤规则,端口映射的时候, 不要映射5001等端口, 改成一个不常用的, 尤其不要打开22端口。

3. 配置出站、入站规则,

iptables -A INPUT -j DROP

iptables -A OUTPUT -j DROP

把所有的端口都封了, 然后只打开类似5001等需要用的端口。

4. (如果需要公网使用ssh)使用堡垒机

可以买一个低功耗开发板, 例如arm开发板、赛扬的二手笔记本。上面安装正版的ubuntu server(免费),

server上安装堡垒机, 隔离外部访问

5. 定时扫描进程, 不是在白名单里面的进程都给kill了:

参阅python脚本:

import psutil

import subprocess

class OOMKiller:

def init(self, whitelist_processes, whitelist_ports):

self.whitelist_processes = whitelist_processes

self.whitelist_ports = whitelist_ports

def get_all_processes(self):

return psutil.process_iter(attrs=['pid', 'name', 'cmdline'])

def get_process_ports(self, pid):

try:

proc = psutil.Process(pid)

connections = proc.connections()

ports = [conn.laddr.port for conn in connections]

return ports

except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):

return []

def kill_process(self, pid, program, cmdline, port):

try:

#subprocess.run(['kill', str(pid)])

print(f"Killed {port} process: {program} {cmdline}")

except subprocess.CalledProcessError:

pass

def scan_and_kill(self):

for proc in self.get_all_processes():

program = proc.info['name']

cmdline = " ".join(proc.info['cmdline'])

if program not in self.whitelist_processes:

ports = self.get_process_ports(proc.info['pid'])

if any(port not in self.whitelist_ports for port in ports):

for port in ports:

if port not in self.whitelist_ports:

self.kill_process(proc.info['pid'], program, cmdline, port)

# Example usage:

whitelist_processes = ['systemd', 'sshd', 'bash', 'vpnauthd', 'openvpn', 'synowsdiscoveryd', 'nmbd', ] # Add processes you want to whitelist

whitelist_ports = [22, 23, 80, 139, 443, 445, 554, 111, 892, 2049, 111, 662, 892, 2049,554 ,1688,1935,3260,3261,3263,3265,5566,6690] # Add ports you want to whitelist

killer = OOMKiller(whitelist_processes, whitelist_ports)

killer.scan_and_kill()

# port table

# 554 SurveillanceStation

# 1688 docker-proxy, windows kms

# 1935 SurveillanceStation

# 3260 iSCSI

# 3261 iSCSI

# 3263 iSCSI

# 3265 iSCSI

# 5566 5566高级 LUN 和共享文件夹

# 6690 Cloud

# 7681 ttyd, pocopico.misc的渗透端口

# 111, 662, 892, 2049 NFS

# iptables -A INPUT -p tcp --dport 3261 -j DROP

# iptables -A INPUT -p tcp --dport 3263 -j DROP

# iptables -A INPUT -p tcp --dport 3264 -j DROP

# iptables -A INPUT -p tcp --dport 3265 -j DROP

# iptables -A INPUT -p tcp --dport 4045 -j DROP

# iptables -A INPUT -p tcp --dport 5357 -j DROP

# iptables -A INPUT -p tcp --dport 7681 -j DROP

如上, 很难说完全保证你的nas的安全, 但是大概率能减少你的nas被无端的使用。

当然, 如果攻击者想要直接定时加密你的硬盘, 怎么想都百搭, 毕竟你用的是盗版。

4. 结束

总之, 引导的提供者, 也是用心用时间在提供服务。 但是可能提供的过程中遗留了一些难以解决的漏洞, 这些漏洞是能被攻击者利用的。

且不做防护, 你的nas 100%被攻击, 可能你在读文章的时候,它正在被攻击。

如果大家有其他好的方案,请联系我。

2024年04月16日 更新,更新:

改动点:

1. 安装iptables(可以先在套件中心安装ruby和git, 然后使用清华大学镜像源安装homebrew, 使用brew安装iptables), 使用如下配置:

# /etc/iptables/block_ip.sh

内容(里面的端口按情况更改):

================

#! /bin/bash

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A INPUT -p tcp -m multiport --dports 22,23,80,111,137,138,139,161,443,445 -j ACCEPT

iptables -A INPUT -p tcp -m multiport --dports 548,892,1194,1688,1935,2049,5000,5001 -j ACCEPT

iptables -A INPUT -p tcp -m multiport --dports 0:65535 -j DROP

iptables -A INPUT -p udp -m multiport --dports 0:65535 -j DROP

================

2. 安装 systemctl。

# vi /etc/systemd/system/xxx.service

内容(里面的端口按情况更改):

=================

[Unit]

Description=Iptables Block None Allowed

After=network.target

[Service]

ExecStart="/etc/iptables/block_ip.sh"

Restart=always

User=root

Group=root

[Install]

WantedBy=multi-user.target

=================

3. 编辑 /etc/hosts.deny, 把下面内容放进去:

http://antivirus.neu.edu.cn/ssh/lists/neu.txt

  1. 一定记住修改sshd_config, 禁止root访问。

大致含义是只允许部分端口开放, 这样即使有进程监听了不可预期的端口, 也无法接收到外部的请求。

搭配正文python写的扫描非白名单的进程, 一定层度上会安全一点。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
26评论

  • 精彩
  • 最新
  • 完了,我家的小姐姐都被别人看了? [火冒三丈] [火冒三丈]

    校验提示文案

    提交
    我上面两个T的小姐姐,,,, 一直被看着 [喜极而泣] 这倒是无所谓, 重点是一天四块钱的网费, 两块钱的电费, 给他人做嫁衣, 简直是脑壳大

    校验提示文案

    提交
    要有分享精神

    校验提示文案

    提交
    收起所有回复
  • 群晖代码和黑群晖不一样吗?

    校验提示文案

    提交
    肯定是不一样的, 虽然安装包同一个, 但是引导程序本身优先级高于群晖的系统, 启动的时候想插入点什么共计代码还不是轻轻松松

    校验提示文案

    提交
    收起所有回复
  • 一毛钱不值的东西谁动你的数据

    校验提示文案

    提交
    你是一点不懂啊,挂个算力程序,做个跳板都是小意思。做all in one的,所有数据都看得到。

    校验提示文案

    提交
    6。

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 为了安全,docker走起。。。。。。

    校验提示文案

    提交
  • 握草,人家黑裙的引导文件和驱动都是开源的,有没有问题看一下源代码就知道了。
    文章里好多问题都是白裙、黑裙同样会遇到的,与是不是黑裙没有半毛钱的关系。

    校验提示文案

    提交
  • 这才是好文章

    校验提示文案

    提交
  • 说了半天,没看到实锤,你说这些配置文件,哪个系统没有?

    校验提示文案

    提交
  • 你的创作内容真是太棒了!黑群晖镜像安全一览最后,让我等值友不得不服!

    校验提示文案

    提交
  • 多一点楼主这样懂技术的使用者,才更安全

    校验提示文案

    提交
  • 厉害,看来我也不用再费神搞黑裙了……

    校验提示文案

    提交
  • 赞一个,技术就是需要楼主这样较真。

    校验提示文案

    提交
  • 谢谢提醒,安全问题自己必须负责

    校验提示文案

    提交
  • 这就是TM的哦豁

    校验提示文案

    提交
  • 经过长达两星期的验证, 找到了一个基本上安全的方案(vdsm/virtual-dsm):
    去看看
    在物理机上安装一个Ubuntu Server, 然后使用docker安装vDSM, 逐行分析了它的镜像源码。 全部是依赖于vDSM本身的机制, 没有发现恶意代码的植入。

    因此, 只要群晖官方没有留后门, 理论上是不担心主观上的安全问题的(客观上存在的问题, 白群晖一样存在, 不在讨论范围内)

    校验提示文案

    提交
  • 不敢苟同,不要抹黑!!!在你所说的2.1,2.2,2.4风险面前,黑群和白群有区别吗,白群一样有!至于2.3,本人至今未见过引导文件作者作恶的实例!如果你提醒大家规避注意这些风险,我会觉得楼主是好人。但是全文只说黑群,不说白群,我只能说至少标题给人感觉居心叵测!

    校验提示文案

    提交
    引导:去看看
    其次,我没白裙

    校验提示文案

    提交
    黑群晖的引导不一样

    校验提示文案

    提交
    收起所有回复
  • 东拉西扯,胡说八道,软件安全和网络安全都分不清。现在的黑群晖一般都用ARPL自编译引导,代码都是开源的,哪来的安全问题?再说网络安全,与用黑裙还是白裙没啥关系,就算你用白裙,该扫描还是扫描,该攻破还是攻破

    校验提示文案

    提交
    你下的不是源码

    校验提示文案

    提交
    收起所有回复
  • 正版同样作恶

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
125
扫一下,分享更方便,购买更轻松