Linux信息自动化收集

程序地址: https://github.com/l3m0n/linux_information

两年前写的东西,写的比较烂,公开出来与大家交流一下。

当前权限判断:是否为root
whoami


1、系统区分
debian系列:debian、ubuntu
redhat系列:redhat、centos

是否为docker、或者为虚拟机

分为通用模块、单独模块的信息获取


2、系统信息收集

内核(是否为x64还是x86):uname -a

版本:cat /etc/issue
cat /etc/*-release

网络地址\mac地址\ipv6地址:ifconfig

主机名:hostname

hosts:
cat /etc/hosts
cat /etc/resolv.conf

3、用户信息

who
last

系统用户:
获取用户名、gid、uid、home路径:awk -F ':' '{print $1,$3,$4,$6;}' /etc/passwd
获取用户组:cat /etc/group
**获取hash**:cat /etc/shadow

列出超级用户:grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}'

查看用户操作:cat ~/.bash_history

获取在线用户:w

4、服务程序
需要实现:得到系统安装程序以及服务,版本信息和运行权限,用文档封装一下

端口:netstat
进程:ps -aux
ps -A -o user,pid,tty,start,time,command | grep -E "[^]]$"
程序:
dpkg -l
rpm -qa

5、敏感文件

/etc/目录下
计划任务
日志文件
bash_history
find / -type f -iname "*.bash_history" -o -iname "*config*" -o -iname "web.xml" -o -iname "*database*" -o -iname "*pass*" 2>/dev/null
config
web.xml

6、常见可使用程序

nmap
nc
netcat
wget
tcpdump
wireshark
rpm
yum
apt-get
ftp
ssh
telnet
scp
nslookup
ruby

6、交互通信的ip

hosts
netstat -antpu
arp -a
tracert

7、提权帮助
根据内核去确认漏洞

8、信息展示
整体流程:信息获取 -> 信息处理 -> 信息输出

系统信息:

内核、x86|x64、主机类型、主机名
ip地址、mac地址
是否存在exp获取root

用户信息:

存在的用户、在线用户
用户组
last信息
用户操作信息 .bash_history
用户hash

服务信息:

端口,可能的服务名
进程,可能的进程名,进程权限,进程开启时间

文件信息:

敏感文件(password/config/database)
打包文件+运行文件(.zip/.tar.gz/.pl/.sh/.py)
服务配置文件(httpd.conf)
log文件(做处理,只显示log所在目录)
常见的信息文件扫描

//需要通过上面获取的信息整理出来
程序信息:

程序名、程序端口、运行的进程、版本、配置文件

命令信息:

可执行的一些程序

通信信息:

hosts
arp缓存
端口

结构信息:

内网主机存活


9、参考

基础内核信息:
uname -a 2>/dev/null
cat /proc/version 2>/dev/null
cat /etc/*-release 2>/dev/null

主机名:
hostname 2>/dev/null

最后用户登录的信息:
lastlog |grep -v "Never" 2>/dev/null

strips out username uid and gid values from /etc/passwd
cat /etc/passwd | cut -d ":" -f 1,2,3,4 2>/dev/null

列出所有用户的组
for i in $(cat /etc/passwd 2>/dev/null| cut -d":" -f1 2>/dev/null);do id $i;done 2>/dev/null

查询是否有hash存储在/etc/passwd(*nix中)
grep -v '^[^:]*:[x]' /etc/passwd 2>/dev/null


根据uid列出本地用户:
grep -v "^#" /etc/passwd | awk -F: '$3 == 0 || $3 == 500 || $3 == 501 || $3 == 502 || $3 == 1000 || $3 == 1001 || $3 == 1002 || $3 == 2000 || $3 == 2001 || $3 == 2002 { print }'

读取shadow文件
cat /etc/shadow 2>/dev/null

bsd的shadow文件
cat /etc/master.passwd 2>/dev/null

能够sudo不需要提供密码
echo '' | sudo -S -l 2>/dev/null

检查root目录是否存在
ls -ahl /root/ 2>/dev/null

显示home目录情况
ls -ahl /home/ 2>/dev/null

寻找文件我们能写但是不属于我们的文件
find / -writable -not -user \`whoami\` -type f -not -path "/proc/*" -exec ls -al {} \; 2>/dev/null

寻找ssh公钥
find / -name "id_dsa*" -o -name "id_rsa*" -o -name "known_hosts" -o -name "authorized_hosts" -o -name "authorized_keys" 2>/dev/null |xargs -r ls

root是否能登录ssh
grep "PermitRootLogin " /etc/ssh/sshd_config 2>/dev/null | grep -v "#" | awk '{print  $2}'
如果返回yes则可以登录

环境变量
echo $PATH 2>/dev/null

列出能用的shells
cat /etc/shells 2>/dev/null

hash的密码加密政策
cat /etc/login.defs 2>/dev/null | grep "PASS_MAX_DAYS\|PASS_MIN_DAYS\|PASS_WARN_AGE\|ENCRYPT_METHOD" 2>/dev/null | grep -v "#" 2>/dev/null

所有的计划任务配置文件
ls -la /etc/cron* 2>/dev/null

获取计划任务内容
cat /etc/crontab 2>/dev/null

ubuntu获取计划任务
ls -la /var/spool/cron/crontabs 2>/dev/null

ls -la /etc/anacrontab 2>/dev/null; cat /etc/anacrontab 2>/dev/null
ls -la /var/spool/anacron 2>/dev/null

获取每个用户的计划任务
cat /etc/passwd | cut -d ":" -f 1 | xargs -n1 crontab -l -u 2>/dev/null

获取ifconfig

/sbin/ifconfig -a 2>/dev/null

dns设置
cat /etc/resolv.conf 2>/dev/null | grep "nameserver"

路由配置
route 2>/dev/null | grep default

正在监听的tcp端口
netstat -antp 2>/dev/null

udp端口
netstat -anup 2>/dev/null

正在运行的程序
ps aux 2>/dev/null

查看进程路径和权限
ps aux | awk '{print $11}'|xargs -r ls -la 2>/dev/null |awk '!x[$0]++'

获取inetd.conf文件(监视网络的守护进程)
cat /etc/inetd.conf 2>/dev/null
cat /etc/inetd.conf 2>/dev/null | awk '{print $7}' |xargs -r ls -la 2>/dev/null
cat /etc/xinetd.conf 2>/dev/null
cat /etc/xinetd.conf 2>/dev/null | awk '{print $7}' |xargs -r ls -la 2>/dev/null

列举各种服务的管理脚本
ls -la /etc/init.d 2>/dev/null
寻找不是root的:
find /etc/init.d/ \! -uid 0 -type f 2>/dev/null |xargs -r ls -la 2>/dev/null

ls -la /etc/rc.d/init.d 2>/dev/null
find /etc/rc.d/init.d \! -uid 0 -type f 2>/dev/null |xargs -r ls -la 2>/dev/null
ls -la /usr/local/etc/rc.d 2>/dev/null

find /usr/local/etc/rc.d \! -uid 0 -type f 2>/dev/null |xargs -r ls -la 2>/dev/null

获取mysql版本
mysql --version 2>/dev/null
mysqladmin -uroot version 2>/dev/null

获取sudo版本
sudo -V 2>/dev/null| grep "Sudo version" 2>/dev/null

测试root/root能否登录
mysqladmin -uroot -proot version 2>/dev/null

postgres版本
psql -V 2>/dev/null
登录成功
psql -U postgres template0 -c 'select version()' 2>/dev/null | grep version

apache详情
apache2 -v 2>/dev/null; httpd -v 2>/dev/null

apache的运行用户
cat /etc/apache2/envvars 2>/dev/null |grep -i 'user\|group' |awk '{sub(/.*\export /,"")}1'

plan(could contain useful information)
find /home /usr/home -iname *.plan -exec ls -la {} \; -exec cat {} 2>/dev/null \;
rhosts(these may allow us to login as another user etc.)
find /home -iname *.rhosts -exec ls -la {} 2>/dev/null \; -exec cat {} 2>/dev/null \;

.plan
.rhosts
hosts.equiv
/etc/exports
.conf
.log
.ini
.*_history
/root/.*_history
ls -la /var/mail 2>/dev/null
head /var/mail/root 2>/dev/null

软件安装判断流程

dpkg -l
rpm -qa

etc目录配置文件

posted @ 2018-04-25 18:28 l3m0n 阅读(...) 评论(...)  编辑 收藏