intrusion analysis--linux

Intrusion analysis:

1.检查history,last,uname,netstat -tnl,init.d,profile,~/.bashrc,w,lsof,iftop分析流量(启动项,登陆日志wtmp,历史命令,关键目录等)
2.检查进程和系统服务,创建文件,修改文件,root后门是否异常
3.检查开启服务的日志是否异常(根据ip,恶意文件名等)
4.可疑文件分析。(世界杀毒网)
5.查看计划任务

Utility Menu:

1.分页查看文件:
more e.log
2.静态查看进程:
pa aux | awk ‘{print $2}’
awk ’{print $2}’ 截取第二列显示
3.查看文件状态:
stat update
update为命令文件;
stat 用来查看文件时间状态,查看什么时候被修改过

4.使用工具进行扫描rkhank,chkrootkit
rkhank –cheak

5.查看在某个时间段被创建的文件:
touch -t 201306300000 a
touch -t 201307010000 b
find / -cnewer a -a ! -cnewer b
时间段是2013年6月30 到7月1号;
a 和b 为被创建的文件; 

6.查看文件时间,做对比看那些文件被创建或修改:
ls ll
lsof -n
**1.列出所有打开的文件:**
lsof
备注: 如果不加任何参数,就会打开所有被打开的文件,建议加上一下参数来具体定位
**2. 查看谁正在使用某个文件**
lsof   /filepath/file
**3.递归查看某个目录的文件信息**
lsof +D /filepath/filepath2/
****备注: 使用了+D,对应目录下的所有子目录和文件都会被列出
**4. 比使用+D选项,遍历查看某个目录的所有文件信息 的方法**
lsof | grep ‘/filepath/filepath2/’
**5. 列出某个用户打开的文件信息**
lsof  -u username
****备注: -u 选项,u其实是user的缩写
**6. 列出某个程序所打开的文件信息**
**lsof -c [MySQL](http://lib.csdn.net/base/14)**
****备注: -c 选项将会列出所有以[MySQL](http://lib.csdn.net/base/mysql)开头的程序的文件,其实你也可以写成 **lsof | grep mysql, **但是第一种方法明显比第二种方法要少打几个字符了
**7. 列出多个程序多打开的文件信息**
lsof -c mysql -c apache
**8. 列出某个用户以及某个程序所打开的文件信息**
lsof -u test -c mysql
**9. 列出除了某个用户外的被打开的文件信息**
lsof   -u ^root
备注:^这个符号在用户名之前,将会把是root用户打开的进程不让显示
**10. 通过某个进程号显示该进行打开的文件**
lsof -p 1
**11. 列出多个进程号对应的文件信息**
lsof -p 123,456,789
**12. 列出除了某个进程号,其他进程号所打开的文件信息**
lsof -p ^1
**13 . 列出所有的网络连接**
**lsof -i**
**14. 列出所有tcp 网络连接信息**
lsof  -i tcp
**15. 列出所有udp网络连接信息**
lsof  -i udp
**16. 列出谁在使用某个端口**
lsof -i :3306
**17. 列出谁在使用某个特定的udp端口**
lsof -i udp:55
**特定的tcp端口**
lsof -i tcp:80
**18. 列出某个用户的所有活跃的网络端口**
lsof  -a -u test -i
**19. 列出所有网络文件系统**
lsof -N
**20.域名socket文件**
lsof -u
**21.某个用户组所打开的文件信息**
lsof -g 5555
**22. 根据文件描述列出对应的文件信息**
lsof -d description(like 2)
**23. 根据文件描述范围列出文件信息**
lsof -d 2-3
7.查找根目录下所有带关键字文件位置:
find / -type f | xargs grep -l  "market"

find ./ -mtime 0:返回最近24小时内修改过的文件。./代表需要查找的文件夹
find ./ -mtime 1 : 返回的是前48~24小时修改过的文件。而不是48小时以内修改过的文件。
那怎么返回10天内修改过的文件?find还可以支持表达式关系运算,所以可以把最近几天的数据一天天的加起来:
find ./ -mtime 0 -o -mtime 1 -o -mtime 2 ……虽然比较土,但也算是个方法了。

ps aux | grep sshd      #查看进程
strace -o aa -ff -p 13619   #查看子进程
grep open aa* | grep -v -e No -e null -e denied| grep WR 
我们grep一下open系统调用,然后过滤掉错误信息和/dev/null信息,以及denied信息,并且找WR的,就是读写模式打开的,因为要把记录的密码写入文件,肯定要是以写方式打开的文件,大致的看看,很容易找到异常文件/tmp/xxxxxx
losf -i tcp:1521 -n     #查看端口被那些程序使用
lsof -p ^1               #查看出了1号进程所有的进程打开的文件信息
losf abc            #显示文件的进行

find / -name zabbix*.log    #查看zabbix日志

查看80端口的tcp连接:
netstat -tan | grep "ESTABLISHED" | grep ":80" | wc -l


sed 's/\.0/\./g'

查找大于100M的文件!
find /* -type f -size +100M 

查看当前目录下文件和目录大小:
du -h *

apache日志分析,现在来试试最基本的,获取最多访问的前10个IP地址及访问次数。

cat access.log |awk '{print $1}' |sort |uniq -c |sort -rn |wc -l 统计访问IP的总数

cat access.log |awk '{print $1}' |sort |uniq -c |sort -rn 统计访问IP

cat access.log |awk '{print $1}' |sort |uniq -c |sort -rn|head 100 统计前100访问IP

awk -F '//' '{print $2}' wooyun.txt
awk -F '.' '{if($1>0) print $0}' domain2ip.txt
grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' 11
 
cut -d " " -f 1 clientuser.log |uniq -c|sort -r|head -1|awk '{print $2}'
-d 以空格为截断字符
-f 截取每行第一段
uniq -c 统计数量 如: 99 x.x.x.x
snort -r 倒序排列
head -1 显示第一列
awk '{print $2}' 截取并打印第2 列字符
找出apache日志中访问量最大的IP

在行首添加"http://"
sed -i 's/^/http:\/\//g' txt.txt
1、删除文档的第一行
sed -i '1d' <file>
2、删除文档的最后一行
sed -i '$d' <file>

工具介绍:

1.chkrookit 检查后门

2.安装rkhunter

    1.执行命令:
    tar -xvf rkhunter-1.4.0.tar.gz
    cd rkhunter-1.4.0
    ./installer.sh --install
    2.为基本系统程序建立校对样本,建议系统安装完成后就建立。
    执行命令:
    rkhunter --propupd
    ls /var/lib/rkhunter/db/rkhunter.dat #样本文件位置
    3.运行rkhunter检查系统
    它主要执行下面一系列的测试:
    3.1. MD5校验测试, 检测任何文件是否改动.
    3.2. 检测rootkits使用的二进制和系统工具文件.
    3.3. 检测特洛伊木马程序的特征码.
    3.4. 检测大多常用程序的文件异常属性.
    3.5. 执行一些系统相关的测试 - 因为rootkit hunter可支持多个系统平台.
    3.6. 扫描任何混杂模式下的接口和后门程序常用的端口.
    3.7. 检测如/etc/rc.d/目录下的所有配置文件, 日志文件, 任何异常的隐藏文件等等. 例如, 在检测/dev/.udev和/etc/.pwd.lock文件时候, 我的系统被警告.
    3.8. 对一些使用常用端口的应用程序进行版本测试. 如: Apache Web Server, Procmail等.
    执行命令:
    rkhunter --check
  如果您不想要每个部分都以 Enter 来继续,想要让程序自动持续执行,可以使用:
    /usr/local/bin/rkhunter --check --sk

3.检查安全日志信息

more /var/log/secure |grep Accepted

4.查找webshell命令

find /opt/ -name "*.jsp" |xargs egrep 'assert|phpspy|c99sh|milw0rm|eval|\(gunerpress|\(base64_decoolcode|spider_bc|shell_exec|passthru|\(\$\_\POST\[|eval \(str_rot13|\.chr\(|\$\{\"\_P|eval\(\$\_R|file_put_contents\(\.\*\$\_|base64_decode'

find /opt/ -name "*.jsp" |xargs egrep '\.exec\(request.getParameter\('

常用的日志文件如下:
  access-log         纪录HTTP/web的传输
  acct/pacct         纪录用户命令
  aculog           纪录MODEM的活动
  btmp            纪录失败的纪录
  lastlog  纪录最近几次成功登录的事件和最后一次不成功的登录
  messages    从syslog中记录信息(有的链接到syslog文件)系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 
  sudolog           纪录使用sudo发出的命令
  sulog           纪录使用su命令的使用
  syslog     从syslog中记录信息(通常链接到messages文件)
  utmp            纪录当前登录的每个用户
  wtmp        一个用户每次登录进入和退出时间的永久纪录
  xferlog           纪录FTP会话
/var/log/secure与安全相关的日志信息 
/var/log/maillog 与邮件相关的日志信息 
/var/log/cron 与定时任务相关的日志信息 
/var/log/spooler 与UUCP和news设备相关的日志信息 
/var/log/boot.log 守护进程启动和停止相关的日志消息  

查看某个时间段被修改的日志:

cat /var/log/messgaes | grep “2012-6-1”
sed -n '/2017-01-04 11:00:00/,/2017-01-04 11:20:55/p'  ejabberd.log

找出 3 天"以前"被改动过的文件 (前第三天以前 → 2011/09/05 12:00 以前的文件) (> 72 小时)
find /var/log/ -mtime +3 -type f -print

找出前第 3 天被改动过的文件 (2011/09/04 12:00 ~ 2011/09/05 12:00 ?鹊奈募? (72 ~ 96 小时)
find /var/log/ -mtime 3 -type f -print

找出第 3 天被改动过的文件 (也可以这样写)
find /var/log/ -mtime +2 -mtime -4 -type f -print

找出第 7天以前到11天以前之间被改动过的文件 (也可以这样写)
# find /var/log/ -mtime +7 -mtime -11 -type f -print 


系统

# uname -a               # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue   # 查看操作系统版本
# cat /proc/cpuinfo      # 查看CPU信息
# hostname               # 查看计算机名
# lspci -tv              # 列出所有PCI设备
# lsusb -tv              # 列出所有USB设备
# lsmod                  # 列出加载的内核模块
# env                    # 查看环境变量
资源

# free -m                # 查看内存使用量和交换区使用量
# df -h                  # 查看各分区使用情况
# du -sh <目录名>        # 查看指定目录的大小
# grep MemTotal /proc/meminfo   # 查看内存总量
# grep MemFree /proc/meminfo    # 查看空闲内存量
# uptime                 # 查看系统运行时间、用户数、负载
# cat /proc/loadavg      # 查看系统负载
磁盘和分区

# mount | column -t      # 查看挂接的分区状态
# fdisk -l               # 查看所有分区
# swapon -s              # 查看所有交换分区
# hdparm -i /dev/hda     # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE       # 查看启动时IDE设备检测状况
网络

# ifconfig               # 查看所有网络接口的属性
# iptables -L            # 查看防火墙设置
# route -n               # 查看路由表
# netstat -lntp          # 查看所有监听端口
# netstat -antp          # 查看所有已经建立的连接
# netstat -s             # 查看网络统计信息
进程

# ps -ef                 # 查看所有进程
# top                    # 实时显示进程状态
用户

# w                      # 查看活动用户
# id <用户名>            # 查看指定用户信息
# last                   # 查看用户登录日志
# cut -d: -f1 /etc/passwd   # 查看系统所有用户
# cut -d: -f1 /etc/group    # 查看系统所有组
# crontab -l             # 查看当前用户的计划任务
服务

# chkconfig --list       # 列出所有系统服务
# chkconfig --list | grep on    # 列出所有启动的系统服务
程序

# rpm -qai                # 查看所有安装的软件包
$yum list     //列出所指定的软件包,后可以加上你想查找的软件包的名字
$yum linst installed      //列出所有已安装的软件包
$yum info installed       //列出所有已安装的软件包信息
查看 /var/log/yum.log
strings命令查看文件内容

复制/dev/sdc 到文件 cyqdrive.dd 中。将文件分割成多个 1GB 大小的文件。读取错误时,忽略该错误而不停止拷贝行为。这个例子命令如下:
#dd if=/dev/sdc split=1G of=cyqdrive.dd
刚才已经展示如何创建一个磁盘镜像,但只是创建镜像到系统的本地文件。但是当当前的物理空间不足时就要使用 netcat 来将 dd 命令的的输出通过网络连接进行重定向。首先在目标服务器上,启动 netcat 作为一个监听,并将输出重定向到一个远程服务器上的文件。我会用 netcat 监听 TCP 的 3452 端口,并将镜像写入一个远程的文件 cyqimage.dd。
#nc -l -p 3452 > myimage.dd
  然后你可以对服务器(192.168.1.1)进行镜像拷贝,并通过标准输出(没有指定输出的文件)来将镜像文件输出到 netcat,然后由 netcat 将镜像文件发送到目标服务器,使用如下命令:
# dd if=/dev/sdc split=1G of=cyqdrive.dd | nc 192.168.1.1 3452


lsmod       列出内核
modinfo   查看内核信息

1. lsmod 列出已经加载的内核模块
lsmod 是列出目前系统中已加载的模块的名称及大小等;另外我们还可以查看 /proc/modules ,我们一样可以知道系统已经加载的模块。
2.modinfo 查看模块信息
modinfo 可以查看模块的信息,通过查看模块信息来判定这个模块的用途。
3.modprobe 挂载新模块以及新模块相依赖的模块

cat /proc/modules

#!/bin/bash

###########################################################################
# Check Abnormal User
###########################################################################

if [ $# -eq 2 ];then
    if [ -d $1 ] && [ -d $2 ];then
        WEBCHK=1 
        WEBDIR=$1
        LOGDIR=$2
    else
        echo "Web dir $1 or $2 error, exit."
        exit -1
    fi 
else
    WEBCHK=0
fi

echo -e "\033[33m#### 0x0. Check system source use \033[0m"
echo -e "\033[33m|--> Check OS Version \033[0m"
cat /etc/redhat-release
echo -e "\033[33m|--> Check system cpu load \033[0m"
uptime
echo -e "\033[33m|--> Check system mem use \033[0m"
free -g
echo -e "\033[33m|--> Check system network rate use \033[0m"
sar -n DEV 3 1  | grep -vE '^$'
echo -e "\033[33m|--> Check system tool \033[0m"
ls -al `which stat` 
stat `which ps top netstat sshd lsof find`
echo ""

echo -e "\033[33m#### 0x1. Check abnormal user \033[0m"
echo -e "\033[33m|--> Check passwd stat info, GID=0 or use bash \033[0m"
stat /etc/passwd | grep -vE 'ile|Inode'
echo -e "\033[33m|--> Check GID=0 or use bash user \033[0m"
grep -E '/bash|:0+:' /etc/passwd | grep -vE 'root|mysql|rpm|mysql|shutdown|halt|sync'
echo -e "\033[33m|--> Check shadow stat info and no password user \033[0m"
stat /etc/shadow | grep -vE 'ile|Inode'
echo -e "\033[33m|--> Check no password user \033[0m"
awk -F: 'length($2)==0 {print $1}' /etc/shadow
echo ""

echo -e "\033[33m#### 0x2. Check service and task info \033[0m"
echo -e "\033[33m|--> Check start chkconfig service \033[0m"
chkconfig --list |grep -E '2:on|3:on' | awk '{printf"%s ",$1}'
echo ""
echo -e "\033[33m|--> Check start rc.local \033[0m"
grep -vE '^$|^#' /etc/rc.local
echo -e "\033[33m|--> Check start crontab \033[0m"
crontab -l
echo ""

echo -e "\033[33m#### 0x3. Check process info \033[0m"
echo -e "\033[33m|--> Check ps result \033[0m"
ps axu | grep -v ]$
echo -e "\033[33m|--> Check hidden process \033[0m"
ps -ef | awk '{print $2}' | sort -n | uniq >1
ls /proc | sort -n |uniq >2
diff 1 2 | awk '{printf"%s ",$0}'
echo ""

echo -e "\033[33m#### 0x4. Check network info \033[0m"
echo -e "\033[33m|--> Check network hosts configure \033[0m"
cat /etc/hosts | grep -v 'localhost'
echo -e "\033[33m|--> Check network dns configure \033[0m"
cat /etc/resolv.conf | grep 'nameserver'
echo -e "\033[33m|--> Check network ip configure \033[0m"
/sbin/ip a|grep 'inet '| awk '{print $2}' | awk -F'/' '{printf"%s ",$1}'
echo ""
echo -e "\033[33m|--> Check network interface promisc mode \033[0m"
ifconfig | grep 'PROMISC'
echo -e "\033[33m|--> Check network interface forward mode \033[0m"
cat /proc/sys/net/ipv4/ip_forward 
echo -e "\033[33m|--> Check rpc info\033[0m"
rpcinfo -p
echo -e "\033[33m|--> Check network service info\033[0m"
netstat -nap | grep -vE 'unix|raw'
echo -e "\033[33m|--> Check process <-> port info\033[0m"
lsof -i
echo ""

echo -e "\033[33m#### 0x5. Check file and module info \033[0m"
echo -e "\033[33m|--> Check file which link number equare 0 \033[0m"
lsof +L1
echo -e "\033[33m|--> Check file which change 3 days before now and executable \033[0m"
find / -path "/proc" -prune -o -type f -executable -mtime -3 -print
echo -e "\033[33m|--> Check module which installed \033[0m"
lsmod | awk '{printf"%s ",$1}'
echo ""
echo ""

echo -e "\033[33m#### 0x6. Check ssh and bash \033[0m"
echo -e "\033[33m|--> Check ssh key login host\033[0m"
if [ -e /root/.ssh/authorized_keys ]; then
    awk '{printf"%s ",$3}' /root/.ssh/authorized_keys
fi
echo -e "\033[33m|--> Check ssh password login user\033[0m"
lastlog | grep -vE 'Never'
echo -e "\033[33m|--> Check ssh now login\033[0m"
w
echo -e "\033[33m|--> Check ssh login success history\033[0m"
last -n 30
echo -e "\033[33m|--> Check ssh login fail history\033[0m"
grep -ri "ail" /var/log/secure* | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'| sort -n | uniq | awk '{printf"%s ",$1}'
echo ""
echo -e "\033[33m|--> Check bash history size\033[0m"
echo $HISTSIZE
echo -e "\033[33m|--> Check some secure operation \033[0m"
history | grep -E 'wget|whoami'
echo -e "\033[33m|--> Check bash history \033[0m"
history 100 | awk '{for(i=2;i<=NF;i++)printf"%s ",$i;printf" <-- "}'
echo ""

echo -e "\033[33m#### 0x7. Check web log \033[0m"
echo -e "\033[33m|--> Check webshell \033[0m"
find $WEBDIR/ -type f -name '*.php' | xargs egrep '(phpspy|c99sh|milw0rm|eval\(gunerpress|eval\(base64_decode|spider_bc|@$)' | awk -F : '{print $1}' > /tmp/checkweb.log
grep -i 'select%20|sqlmap|script' $LOGDIR/*log  | grep 500 | grep -i \.php > /tmp/checkweb.log
cat /tmp/checkweb.log 
echo ""

echo -e "\033[33m#### 0x8. Check rootkit and av \033[0m"
yum install -y epel-release rkhunter clamav >/dev/null 2>&1 
echo -e "\033[33m|--> Check rootkit\033[0m"
rkhunter -c --sk >> /tmp/rkhunter.log
grep 'Warning' /tmp/rkhunter.log
echo -e "\033[33m|--> Check av\033[0m"
clamscan -r --bell -i / > /tmp/clamav.log 2>&1
cat /tmp/clamav.log
echo ""

Relevant Link:
暂无

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容