Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

警惕Ubuntu APT源污染

0
0

作者: Saviour

这个APT源污染,需要同步下载大量的源服务器文件,我下完之后大约220多G。

系统:Ubuntu 16.04 LTS 硬盘:500G 软件:apt-mirror 路径:/service/ubuntu/mirror 木马:sudo apt-get install slurm 第一个阶段:

为了测试我们将原版的slurm修改为我们测试之后的版本,用自定义好的测试文件将原版的slurm进行替换;

按照如下命令进行操作,如图:


警惕Ubuntu APT源污染
图一(解压缩slurm deb包)

提示:将生成好的测试文件替换后,执行md5sum slurm计算md5值,将原先的slurm值替换掉,然后再使用dpkg打包deb


警惕Ubuntu APT源污染
图二(计算替换后的slurm MD5值)
警惕Ubuntu APT源污染
图三(替换DEBIAN目录下md5sum文件中的slurm值)
警惕Ubuntu APT源污染
图四(dpkg进行slurm重打包 )
警惕Ubuntu APT源污染
图五(将生成好的slurm包进行本地安装测试) 第二个阶段:

这个也是一个非常漫长的过程,需要同步APT源到本地,大约200多G。

同步完成之后,使用Apache搭建网站,并开启列目录功能,按照如下内容进行配置:
警惕Ubuntu APT源污染
图六(修改配置文件,设置网站目录,并开启列目录功能)
警惕Ubuntu APT源污染
图七(开启之后的APT源列目录)

进行APT源测试,执行sudo apt-get update,同步本地APT源,看是否正常。


警惕Ubuntu APT源污染
图八(同步本地APT源)
警惕Ubuntu APT源污染
图九(同步本地APT源成功,无报错)
警惕Ubuntu APT源污染
图十(测试通过本地APT源进行安装软件成功) 第三个阶段:

这个阶段将分析APT源软件的安装方式,研究一个完整的APT软件安装过程及过程中调用的文件,并试图将调用的文件内容进行特定修改,看APT是否能再次执行成功。

首先我们执行sudo apt-get install slurm进行原版软件安装,然后分析Apache访问日志,默认网站日志路劲:/etc/apache2/access.log

通过查看APT源网站访问,发现在初始APT源安装软件的时候,APT下载过InRelease、Packages.xz等文件;
警惕Ubuntu APT源污染
图十一(APT访问InRelease签名文件)
警惕Ubuntu APT源污染
图十二(APT访问Packages.xz文件)

InRelease文件是一个gpg明文签名文件,里面包含了Packages.xz等md5、sha1、sha256、文件大小等校验值。


警惕Ubuntu APT源污染
图十三(InRealse文件)

Packages.xz等文件(包括其他Packages开头文件),里面包含了其对应pool目录下的deb文件md5、sha1、sha256、文件大小等校验值。


警惕Ubuntu APT源污染
图十四(Packages.xz文件) 通过对gpg进行了解,发现gpg可以进行签名伪造,比如ubuntu官方的签名邮箱为mirror@ubuntu.com,那么我们也可以使用官方签名的邮箱重新进行申请,获得一个签名key。
警惕Ubuntu APT源污染
图十五(gpg key)

由于默认官方对Release文件进行了签名,那么我们在修改Release文件后必须对他进行重新签名,生成我们自己的Release文件(不然会在APT更新时报错)。

这次实验会用到的gpg命令如下:

gpg命令解析

gpg --gen-key 创建一个key gpg --list-keys 查看key列表 gpg --armor --output public-key.txt --export [用户ID] 导出公钥 gpg --armor --output private-key.txt --export-secret-keys 导出私钥 gpg --keyserver hkp://keys.gnupg.net --send-keys [用户ID] 上传公钥到服务器 gpg --fingerprint [用户ID] 验证公钥 gpg --clearsign test.txt 明文签名文件 我使用的是Git windows客户端进行gpg key 生成,然后将生成的key导入ubuntu中
警惕Ubuntu APT源污染
图十六(gpg密钥生成) 默认Windows gpg密钥生成路径为:C:\Users[用户名].gnupg
警惕Ubuntu APT源污染
图十七(gpg密钥Windows目录) 将.gnupg文件夹导入ubuntu用户目录下,路仅为:/home/[用户名]
警惕Ubuntu APT源污染
图十八(gpg密钥ubuntu目录) 第四个阶段:

将我们重打包的slurm deb文件,md5、sha1、sha256、大小等信息收集起来,这里我们需要改两个文件,一个是Packages.xz、一个是InRealse文件,步骤如下:

将slurm文件md5、sha1、sha256、大小写入Packages.xz解压后文件对应的字段中
警惕Ubuntu APT源污染
图十九(修改slurm对应的值) 改完slurm文件后,对Packages进行xz压缩,重新计算Packages.xz的md5、sha1、sha256、文件大小值,将获得的值写入Release文件对应的字段中。
警惕Ubuntu APT源污染
图二十(修改Release对应的md5值)
警惕Ubuntu APT源污染
图二十一(修改Release对应的sha1值)
警惕Ubuntu APT源污染
图二十二(修改Release对应的sha256值)

改完后我们使用刚注册好的gpg key对Release文件进行明文签名,生成Release.asc文件


警惕Ubuntu APT源污染
图二十三(对Release文件进行签名)
警惕Ubuntu APT源污染
图二十四(签名后的Release文件) 最后阶段:

修改完成后,将生成的Release.asc改名为InRelease,并覆盖原先的InRelease文件,执行sudo apt-get update,看是否更新正常,如果报错请导入证书文件,如果报hash不匹配,有可能是你的Release里面的值或文件大小填写错误,填写正确后重新对Release文件进行签名即可,并进行覆盖,重新执行sudo apt-get update,无误后进行本次的最后一步sudo apt-get install slurm。

导入证书:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys [证书公钥ID] 成功结果:

APT成功安装了我们自定义的APT源deb文件,这就意味着,此刻如果我安装的是一个被替换过之后的恶意文件,那么我的主机就被成功入侵了,由于有些用户喜欢使用root用户执行的apt命令,那么就导致恶意文件会以最高权限运行,导致服务器彻底沦陷。


警惕Ubuntu APT源污染
图二十五(自定义slurm文件成功被安装) 实验目的:

1、 APT源是可以篡改的。

2、 警惕不明的第三方源;

3、 官方源也未必完全可信;


警惕Ubuntu APT源污染
实验说明:

此次实验不完全针对APT问题,也不排除YUM源等也存在此问题。

欢迎扫描以下二维码赞赏作者(微信 )
警惕Ubuntu APT源污染

Viewing all articles
Browse latest Browse all 12749

Latest Images

Trending Articles





Latest Images