作为一名长期从事渗透测试的安全工程师,我见过太多新手在Kali Linux中迷失方向。他们往往带着Windows系统的思维惯性,试图在这个完全不同的世界里寻找"我的电脑"和"C盘"。今天我要分享的不仅是20个关键文件的位置,更是渗透测试实战中真正会用到的文件操作思维。
Linux系统的"一切皆文件"哲学意味着:网卡是文件(/dev/eth0),进程是文件(/proc/[pid]),甚至内存都可以通过文件(/dev/mem)来访问。这种设计让Kali成为了渗透测试的瑞士军刀,但前提是你得知道这些"工具"都存放在哪。
实战经验:在最近一次红队演练中,正是通过快速定位到目标的/etc/passwd文件,我们发现了被管理员遗忘的测试账号,从而避免了耗时耗力的暴力破解。
/etc目录是渗透测试人员的"情报中心"。这里有几个你必须熟悉的文件:
/etc/passwd:用户账户数据库
用户名:密码占位符:UID:GID:描述:主目录:登录shell/etc/shadow:加密密码存储
$id$salt$hash(id=1为MD5,5为SHA-256,6为SHA-512)/etc/sudoers:sudo权限配置
/tmp目录的典型权限为777(drwxrwxrwt),最后的't'表示粘滞位(sticky bit),这是它的特殊之处:
渗透案例:在一次CTF比赛中,通过webshell上传提权脚本到/tmp目录,利用cron任务执行获得root权限。
Kali自带的字典文件是暴力破解的基础弹药。重要字典包括:
| 字典文件 | 条目数量 | 适用场景 |
|---|---|---|
| rockyou.txt | 1434万 | 通用密码破解 |
| fasttrack.txt | 222 | 快速测试 |
| nmap.lst | 3236 | 服务枚举 |
使用前需要解压rockyou.txt:
bash复制sudo gzip -d /usr/share/wordlists/rockyou.txt.gz
/usr/share/metasploit-framework目录包含:
code复制├── modules
│ ├── exploits # 漏洞利用代码
│ ├── payloads # 攻击载荷
│ ├── auxiliary # 辅助模块
│ └── post # 后渗透模块
├── scripts # Meterpreter脚本
└── data # 所需数据文件
实战技巧:使用msfvenom -l payloads可查看所有可用payload。
.bash_history:存储用户命令历史
echo > ~/.bash_historyunset HISTFILESSH密钥目录:~/.ssh/
关键日志文件位置:
| 日志文件 | 存储内容 | 取证价值 |
|---|---|---|
| /var/log/auth.log | 认证日志 | 登录尝试记录 |
| /var/log/apache2/access.log | Web访问日志 | 攻击痕迹 |
| /var/log/syslog | 系统日志 | 综合事件记录 |
日志清理方法(需root):
bash复制shred -zu /var/log/auth.log
查找具有SUID权限的文件:
bash复制find / -perm -4000 2>/dev/null
查找可写配置文件:
bash复制find /etc -type f -writable 2>/dev/null
/proc目录下的关键文件:
示例:查看SSH进程的环境变量
bash复制cat /proc/$(pgrep sshd)/environ | tr '\0' '\n'
bash复制chattr +i /etc/passwd
chattr +i /etc/shadow
bash复制apt install auditd
auditctl -w /etc/passwd -p wa -k passwd_change
安全删除文件:
bash复制shred -zun 5 sensitive_file
参数说明:
问题1:无法修改/etc/resolv.conf
bash复制chattr -i /etc/resolv.conf
vim /etc/resolv.conf
问题2:/tmp目录不可写
ls -ld /tmpchmod 1777 /tmp发现入侵后应立即检查:
检查命令示例:
bash复制ls -lat /tmp
grep -v -E "^#" /etc/passwd | awk -F: '($3 == 0) {print}'
查看文件inode信息:
bash复制ls -i filename
通过inode恢复删除文件:
bash复制debugfs -R "ncheck <inode>" /dev/sda1
debugfs -R "dump <inode> recovered_file" /dev/sda1
在文件名中加入不可见字符:
bash复制touch $'normal_file\x0asecret_file'
显示时使用:
bash复制ls -b
位置:~/.nmap
存储位置:~/.BurpSuite
在一次内网渗透中,通过以下文件路径获得突破:
关键命令记录:
bash复制find / -name "*.bak" 2>/dev/null
grep -r "password" /var/www 2>/dev/null
查看ACL权限:
bash复制getfacl /etc/shadow
设置ACL权限示例:
bash复制setfacl -m u:testuser:r-- /etc/shadow
Docker容器中的关键目录:
文件操作最佳实践:
示例代码片段:
bash复制#!/bin/bash
TMP_FILE=$(mktemp /tmp/script.XXXXXX)
trap 'rm -f "$TMP_FILE"' EXIT
# 脚本主体内容
echo "Working..." > "$TMP_FILE"
转换换行符:
bash复制dos2unix script.sh
处理文件名编码问题:
bash复制convmv -f gbk -t utf8 --notest *
Samba配置文件位置:
/etc/samba/smb.conf
关键参数:
ini复制[share]
path = /srv/share
writable = yes
valid users = @smbgroup
关键命令:
bash复制df -h # 磁盘空间
du -sh /var/log/* # 目录大小
iostat -x 1 # IO性能
/etc/audit/audit.rules示例:
code复制-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/sudoers -p wa -k privilege_escalation
/etc/logrotate.conf关键参数:
code复制weekly
rotate 4
create
compress
/etc/sysctl.conf安全加固示例:
conf复制net.ipv4.conf.all.rp_filter=1
net.ipv4.icmp_echo_ignore_broadcasts=1
kernel.exec-shield=1
应用配置:
bash复制sysctl -p
关键配置文件加载顺序:
检查当前环境变量:
bash复制printenv
systemd服务文件路径:
管理命令:
bash复制systemctl list-unit-files
systemctl enable service_name
DPKG数据库位置:
/var/lib/dpkg/
查看已安装软件:
bash复制dpkg -l
个人工具推荐存放路径:
/opt/tools/
环境变量配置示例:
bash复制export PATH=$PATH:/opt/tools/bin
在~/.bashrc中添加:
bash复制alias mynmap='nmap -sS -T4 -Pn --open'
经过多年渗透测试工作,我总结出几个关键经验:
bash复制cp /etc/ssh/sshd_config{,.bak}
bash复制updatedb
locate nginx.conf
bash复制vim -x secret.txt
bash复制head -n 50 /var/log/syslog
tail -f /var/log/apache2/access.log
bash复制sha256sum important_file
记住,在Kali Linux中,对文件系统的掌握程度直接决定了你的渗透测试效率。建议定期练习以下命令组合:
bash复制# 查找最近修改的文件
find / -type f -mtime -1 2>/dev/null
# 查找SUID/SGID文件
find / -type f \( -perm -4000 -o -perm -2000 \) 2>/dev/null
# 查找可写目录
find / -type d -perm -o=w ! \( -path "/proc/*" -o -path "/sys/*" \) 2>/dev/null