Git Product home page Git Product logo

linuxcheck's Introduction

LinuxCheck

Linux应急处置/信息搜集/漏洞检测工具,支持基础配置/网络流量/任务计划/环境变量/用户信息/Services/bash/恶意文件/内核Rootkit/SSH/Webshell/挖矿文件/挖矿进程/供应链/服务器风险等13类70+项检查

功能

  • 基础配置检查
    • 系统配置改动检查
    • 系统信息(IP地址/用户/开机时间/系统版本/Hostname/服务器SN)
    • CPU使用率
    • 登录用户信息
    • CPU TOP 15
    • 内存 TOP 15
    • 磁盘剩余空间检查
    • 硬盘挂载
    • 常用软件检查
    • /etc/hots
  • 网络/流量检查
    • ifconfig
    • 网络流量
    • 端口监听
    • 对外开放端口
    • 网络连接
    • TCP连接状态
    • 路由表
    • 路由转发
    • DNS Server
    • ARP
    • 网卡混杂模式检查
    • iptables 防火墙
  • 任务计划检查
    • 当前用户任务计划
    • /etc/系统任务计划
    • 任务计划文件创建时间
    • crontab 后门排查
  • 环境变量检查
    • env
    • path
    • LD_PRELOAD
    • LD_ELF_PRELOAD
    • LD_AOUT_PRELOAD
    • PROMPT_COMMAND
    • LD_LIBRARY_PATH
    • ld.so.preload
  • 用户信息检查
    • 可登陆用户
    • passwd文件修改日期
    • sudoers
    • 登录信息(w/last/lastlog)
    • 历史登陆ip
  • Services 检查
    • SystemD运行服务
    • SystemD服务创建时间
  • bash检查
    • History
    • History命令审计
    • /etc/profile
    • $HOME/.profile
    • /etc/rc.local
    • ~/.bash_profile
    • ~/.bashrc
    • bash反弹shell
  • 文件检查
    • ...隐藏文件
    • 系统文件修改时间检测
    • 临时文件检查(/tmp /var/tmp /dev/shm)
    • alias
    • suid特殊权限检查
    • 进程存在文件未找到
    • 近七天文件改动 mtime
    • 近七天文件改动 ctime
    • 大文件>200mb
    • 敏感文件审计(nmap/sqlmap/ew/frp/nps等黑客常用工具)
    • 可疑黑客文件(黑客上传的wget/curl等程序,或者将恶意程序改成正常软件例如nps文件改为mysql)
  • 内核Rootkit 检查
    • lsmod 可疑模块
    • 内核符号表检查
    • rootkit hunter 检查
    • rootkit .ko模块检查
  • SSH检查
    • SSH 爆破
    • SSHD 检测
    • SSH 后门配置
    • SSH inetd后门检查
    • SSH key
  • Webshell 检查
    • php webshell检查
    • jsp webshell检查
  • 挖矿文件/进程检查
    • 挖矿文件检查
    • 挖矿进程检查
    • WorkMiner检测
    • Ntpclient检测
  • 供应链投毒检查
    • Python PIP 投毒检查
  • 服务器风险检查
    • Redis弱密码检测

Usage

联网状态:

  • apt-get install silversearcher-ag
  • yum -y install the_silver_searcher

离线状态:

  • Debian:dpkg -i silversearcher-ag_2.2.0-1+b1_amd64.deb
  • Centos:rpm -ivh the_silver_searcher-2.1.0-1.el7.x86_64.rpm
git clone https://github.com/al0ne/LinuxCheck.git  
chmod u+x LinuxCheck.sh
./LinuxCheck.sh  

如果已经安装了ag和rkhunter可以直接使用以下命令

bash -c "$(curl -sSL https://raw.githubusercontent.com/al0ne/LinuxCheck/master/LinuxCheck.sh)"  

文件会保存成ipaddr_hostname_username_timestamp.log 这种格式

参考

此工具的编写主要参考了以下几款工具/文章并结合个人经验完成

Linenum
https://github.com/lis912/Evaluation_tools
https://ixyzero.com/blog/archives/4.html
https://github.com/T0xst/linux
https://github.com/grayddq/GScan

linuxcheck's People

Contributors

al0ne avatar hoochanlon avatar r6c avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

linuxcheck's Issues

centos 和debian安装silver_searcher的差异

因为在centos 重复执行脚本的时候,老是提示: silversearcher-ag没有安装,其实已经安装了,是the_silver_searcher,centos 仅需:yum install -y the_silver_searcher
同样,在Debian 重复执行的时候,老是提示:the_silver_searcher 没有安装,其实已经安装了,是silversearcher-ag,Debian仅需:apt install -y silversearcher-ag

所以简单调整了一下代码

安装应急必备工具

cmdline=(
"net-tools"
"telnet"
"nc"
"lrzsz"
"wget"
"strace"
"htop"
"tar"
"lsof"
"tcpdump"
"rkhunter"
)
for prog in "${cmdline[@]}"; do

if [ $OS = 'Centos' ]; then
soft=$(rpm -q "$prog")
if echo "$soft" | grep -E '没有安装|未安装|not installed' >/dev/null 2>&1; then
echo -e "$prog 安装中......"
yum install -y "$prog" >/dev/null 2>&1
yum install -y the_silver_searcher >/dev/null 2>&1
fi
else
if dpkg -L $prog | grep 'does not contain any files' >/dev/null 2>&1; then
echo -e "$prog 安装中......"
apt install -y "$prog" >/dev/null 2>&1
apt install -y silversearcher-ag >/dev/null 2>&1
fi

fi
done

small fix & suggestion

内存占用排序,应该是 -k4,应该是忘记改参数了

cpu=$(ps aux | grep -v ^'USER' | sort -rn -k3 | head -15) 2>/dev/null

另外,提个小建议:
代码中有很多输出字体颜色标记,可以封装成 print_msg 函数,这样可以简化代码,增加可读性,类似于如下。

#!/bin/bash

print_msg() {
  echo -e "\e[00;31m[+]$1\e[00m"
}

print_msg 'hello'

last but not least,很棒的实现,学到很多,shell 6 的起飞 🛫

能否增加报告导出功能?

一方面,在日常的应急项目中,希望能够快速导出当前机器的审查结果。
另一方面,有些情况下没有办法传递脚本,希望可以能出一个包含所有测试项的表格,可以更加方便记录工作量。
表格中提供测试大项描述、小项描述、具体执行命令、结果截图。

大佬,我这样理解Linuxcheck.sh自检项目,有什么理解上的问题吗?有的话,麻烦大佬指正一下。

LinuxCheck自检脚本功能陈列

自检脚本功能陈列(非源码、仓库说明顺序,仅个人写作方便),以及个人对该脚本处理执行意义推测(括号内):

检查内容分解 上

  • 部分类型的挖矿木马检测、常规挖矿进程检测
  • Python3 pip 检测(推测是脚本自身用到的依赖项检测,以及python也挺普遍的,二者都有吧)
  • JSP、PHP webshell查杀 (常规,杀软河马查杀也有效果)
  • Redis弱密码检测 (数据库缓存服务暴露在公网上,服务没设置密码,攻破后导致数据随意访问)
  • SSH检查:SSH key显示罗列(比对用的)、SSH inetd(特权提升)、软连接后门、SSH暴破IP统计
  • Rootkit检查:
    • lsmod可疑模块罗列(认为可疑的逻辑:控制系统内存,以及类似增强型功能的支持扩展,可能造成系统不稳定。)
    • Rootkit 内核模块(病毒样本的模块吧)
    • /usr/src/ofa_kernel/default/compat/mlx_compat.ko (通过modinfo mlx_compat的回显来看,大概是兼容、移植用的。)

检查内容分解 中

  • Bash配置检查:
    • History (history -a 从缓存中取出历史记录。
    • /etc/rc.local (**是/etc/rc.d/rc.local的软连接,查看自启服务的;**默认没有执行权限,需手动修改。)
    • /etc/profile全局的环境变量配置文件,这里修改会对所有用户起作用。)
    • $HOME/.profile对当前用户的家目录的有用,修改后,source更新
    • ~/.bash_profile它只能登入的时候执行一次。
    • ~/.bashrc (~/.bash_profile,最大区别:shell script每次都会执行。)
    • bash反弹shell(简单粗糙的理解就是,我执行的shell,传到你机器上执行。
  • 环境变量检查:
    • PATH
    • LD_PRELOAD(抓关键句快速了解:它允许你定义在程序运行前优先加载的动态链接库,另一方面,我们也可以以向别人的程序注入程序,从而达到特定的目的。
    • LD_ELF_PRELOAD、LD_AOUT_PRELOAD (ELF,简单理解,参与程序的调度连接与执行。(涉及汇编知识)
    • PROMPT_COMMAND (export PROMPT_COMMAND="echo Hello" 查看异常的命令导入)
    • ld.so.preload (通过配置/etc/ld.so.preload,可以自定义程序运行前优先加载的动态链接库)
  • 服务信息检查与任务检查:(主要问题点是隐藏后门,植入一般用户不了解的模块、运行编辑器附加命令、系统回显截断机制。
    • 正在运行的Service
    • 最近添加的Service
    • Crontab
    • Crontab Backdoor

检查内容分解 下

  • 文件检查:
    • 系统文件修改时间
    • 7天内改动文件、大于200M文件
    • 可疑黑客文件(.*wget、.*curl、.*openssl、.*mysql,可以理解为黑客植入程序脚本的伪装)
    • 敏感文件 (识别机制:Nikto、ettercap文件名等黑客工具,以及miner挖矿之类文件等)
    • 隐藏文件与临时目录/tmp
    • alias (检查建立过的别名)
    • SUID:/usr/libexec/abrt-action-install-debuginfo-to-abrt-cache (简单理解为有suid授权的用户,等同于持有文件权限的尚方宝剑)
    • lsof +L1 (寻找本地断开的打开文件,网上文章不少表示“显示所有打开的链接数小于1的文件”,真是看不明白...)
  • 基础配置检查:
    • 系统配置信息、登陆用户、hosts
    • CPU使用率/CPU TOP15/内存占用 TOP15、内存占用/硬盘剩余空间
    • 硬盘挂载、常用软件
  • 网络/流量检查
    • ifconfig、网卡混杂模式(网络抓包工具就是网卡的混杂模式)、TCP连接类别
    • 对外开放端口、端口监听(百度百科-端口监听:我们都知道远程访问一台机器的共享目录实际是访问139端口,那么只要对本机139的监听就可以察觉对远程的访问请求。)
    • 网络连接、网络流量、路由表、路由转发(即路由中继)
    • DNS、ARP、IPTABLES
  • 用户信息检查:可登陆用户、登录信息、密码文件修改日期、sudoers(特权提升文件)

运行后的一点小问题

root@k:~/LinuxCheck# ./LinuxCheck.sh

=========================================================
\ Linux信息搜集脚本 V1.2 /

支持Centos、Debian系统检测

author:al0ne

[+]系统改动

直接使用curl或者运行sh脚本,直接这么提示,然后就结束了?也没个报错或者log输出之类的

【建议】能否增加报告导出功能?

一方面,在日常的应急项目中,希望能够快速导出当前机器的审查结果。
另一方面,有些情况下没有办法传递脚本,希望可以能出一个包含所有测试项的表格,可以更加方便记录工作量。
表格中提供测试大项描述、小项描述、具体执行命令、结果截图。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.