Linux异常进程排查 命令记录

写下一些有用的命令,并在需要时检查它们。这篇文章没有太多营养,所以把它当词典用吧。

[En]

Write down some useful commands and check them later when you need them. This article doesn’t have much nutrition, so use it as a dictionary.

目标就是通过技术手段去分析出Linux系统内异常的进程,但是想要达成这个目标,我感觉需要分三个阶段:

  • 初级阶段
  • 主要通过系统命令定位
  • 中级阶段
  • 学习攻击者如何消除入侵痕迹、隐藏进程、做持久Shell
  • 高级阶段
  • 主要是攻防双方的对抗了

查看登录用户数、IP、运行命令

top

最常用的方法

查看所有进程 ps

两个命令功能一样的,写法不一样而已;

ps aux
BSD操作系统格式

参数:

  • a
  • u
  • x
ps -le
linux标准命令格式

参数:

如果top和ps都找不到异常进程

可以试试unhide命令,这个需要安装一下,有时候网络问题会安装失败,需要更换源或者代理试试。

Unhide 通过下述三项技术来发现隐藏的进程。

$ sudo unhide -h
Unhide 20130526
Copyright © 2013 Yago Jesus & Patrick Gouin
License GPLv3+ : GNU GPL version 3 or later
http://www.unhide-forensics.info

NOTE : This version of unhide is for systems using Linux >= 2.6

Usage: unhide [options] test_list

Option :
   -V          Show version and exit
   -v          verbose
   -h          display this help
   -m          more checks (available only with procfs, checkopendir & checkchdir commands)
   -r          use alternate sysinfo test in meta-test
   -f          log result into unhide-linux.log file
   -o          same as '-f'
   -d          do a double check in brute test
Test_list :
   Test_list is one or more of the following
   Standard tests :
      brute
      proc
      procall
      procfs
      quick
      reverse
      sys
   Elementary tests :
      checkbrute
      checkchdir
      checkgetaffinity
      checkgetparam
      checkgetpgid
      checkgetprio
      checkRRgetinterval
      checkgetsched
      checkgetsid
      checkkill
      checknoprocps
      checkopendir
      checkproc
      checkquick
      checkreaddir
      checkreverse
      checksysinfo
      checksysinfo2
      checksysinfo3

查看进程树 pstree

查看进程的父子关系

pstree

参数:

查看是否有别人连接
查看sshd远程连接进程是否有别人连接

pstree | grep sshd

系统进程管理器 top

linux的系统进程管理器

top

默认刷新是每3秒刷新一次,
木马在发送大量数据包时肯定会消耗资源。通过整理,我们可以发现,在顶层流程中有很多嫌疑人。

[En]

Trojans will definitely consume resources when sending a large number of packets. Through sorting, we can find that there are a lot of suspects in the top process.

和ps 的区别是,top能做命令交互。

-d
-b
-n

?/h
P
M
N
q

查看后台进程 jobs

放入后台的进程都是长时间运行的进程,且不需要在和用户交互。

jobs

/+ 刚进入后台的进程
/- 倒数第二个进入后台的进程
Stopped 表示该进程暂停了
Running 表示该进程在运行
Done 表示该进程执行结束

把进程放入后台的方法

方法1:

  • python a.py &
  • 运行起来之后按下 ctrl+z,放在后台暂停。
    这种关闭了当前的shell窗口,后台的任务也会结束。

方法2:crontab -e
写定时任务

方法3:nohup 命令

netstat
lsof

检查系统计划任务中是否有可疑进程。计划任务的命令都需要确认它们是否已安装并具有权限(访问控制文件)。

[En]

Check the system scheduled tasks for suspicious processes. Commands for scheduled tasks all need to confirm whether they are installed and have permissions (access control files).

一次性定时任务

atq
查看一次性计划任务的当前列表

[En]

View the current list of one-time scheduled tasks

at -c 【任务编号】
at任务的具体执行内容

atrm [工作号]
删除指定的at任务

如果atq是由root执行,则将列出系统中所有没有执行的Unix at命令。然后可以使用atrm命令根据atq输出Job号来删除at作业。

crontab

循环预定任务、游戏服务器,需要每月定期重启,使服务器恢复良好状态。

[En]

Cycle scheduled tasks, game server, need to restart regularly every month to get the server back to good condition.

身份绑定

crontab是需要绑定当前用户的身份。
root能编辑root的,hack能编辑hack的,不能串 低权限用户也不能执行高权限命令。

手工编辑定时任务

crontab -e
编辑定时任务

root权限
cat /etc/passwd | cut -f 1 -d : |xargs -I {} crontab -l -u {}

系统配置文件编辑定时任务

root可以编辑/etc/crontab 这个配置文件,

或者使用系统定义的时间、日、周和月配置文件来添加计划任务

[En]

Or use the time, day, week and month profiles defined by the system to add scheduled tasks

/etc/cron.hourly
/etc/cron.daily
/etc/corn.weekly
/etc/cron.monthly

/var/spool/anacron 是新版的 centOS6.0后启用,添加的功能是,如果一些故障(关机了),anacron的主机在恢复正常后,会立即恢复工作
这4个文件的定时任务就能在规定时间点重新执行起来 补回机制不知道:
/etc/cron.hourly
/etc/cron.daily
/etc/corn.weekly
/etc/cron.monthly

crontab -l
查看当前用户的定时任务

crontab -r
删除当前用户的全部定时任务,想删除单个用 -e编辑,一行一行删。

cd /etc/init.d
这个目录存放的是一些脚本,一般是linux以rpm包安装时设定的一些服务的启动脚本

vim /etc/rc.local
这个是个配置文件,作为一个shell脚本来编辑,将自己的启动命令编辑到脚本中,无论如何都会被加载
/etc/init.d/samba start

因为Linux可以按照不同的场景来选择是否加载,甚至是加载不同的启动脚本,这时就要用rc(0-6)按场景来分:

  • rc0.d
  • rc1.d
  • rc2.d
  • rc3.d
  • rc4.d
  • rc5.d
  • rc6.d

以上也是紧急情况下需要检查的启动项目。

[En]

The above are also the startup items that need to be checked in case of emergency.

另外一个添加启动项的地方在/etc/profile里面,还有 /etc/profile.d/目录下以sh结尾的文件

Original: https://www.cnblogs.com/mysticbinary/p/12631895.html
Author: Mysticbinary
Title: Linux异常进程排查 命令记录

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/522819/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【NLP】机器学习中的可能考点

    1、推导线性回归的损失函数,最小二乘法中心极限定理,每个样本误差独立同分布,似然函数 2、正则l1,l2的区别限制模型参数,减小过拟合lasso回归 l1 会产生稀疏矩阵(很多0值…

    大数据 2023年5月28日
    080
  • 内存泄漏定位工具之 valgrind 使用

    前面介绍了 GCC 自带的 mtrace 内存泄漏检查工具,该篇主要介绍开源的内存泄漏工具 valgrind,valgrind 是一套 Linux 下,开放源代码的动态调试工具集合…

    大数据 2023年5月27日
    077
  • Android基础知识 – 内置SQLite数据库

    文章目录 SQLite数据库简单介绍 创建数据库 * SQLiteOpenHelper类 – 简单概述 DatabaseTest项目 升级数据库 对表中的数据进行操作 …

    大数据 2023年11月11日
    056
  • Hive中LEFT OUTER JOIN和INNER JOIN连用时数据缺失问题

    山重水复疑无路,柳暗花明又一村。——陆游《游山西村》 文章目录 前言 一、具体场景 二、问题分析思路 三、解决方案 总结 前言 JOIN连接是SQL常用的关联方式,但他们之前连用时…

    大数据 2023年11月12日
    055
  • Scala基础

    一、概述 Scala是一门多范式的编程语言,一种 类似java的编程语言 ,设计初衷是实现可伸缩的语言 、并集成面向对象编程和函数式编程的各种特性。 Spark就是使用Scala编…

    大数据 2023年5月25日
    094
  • 基于DockerSwarm 部署InfluxDB并使用JAVA操作

    Docker中部署InfluxDB 1、运行容器 $ docker run –rm \ -e INFLUXDB_DB=db0 -e INFLUXDB_ADMIN_ENABLED=…

    大数据 2023年5月28日
    084
  • JuiceFS 在数据湖存储架构上的探索

    大家好,我是来自 Juicedata 的高昌健,今天想跟大家分享的主题是《JuiceFS 在数据湖存储架构上的探索》,以下是今天分享的提纲: 首先我会简单的介绍一下大数据存储架构变…

    大数据 2023年6月3日
    098
  • 剑指Offer:变态跳台阶(10.4)

    题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 解题思路: 要想跳到第n级台阶,…

    大数据 2023年6月3日
    071
  • XXX项目总结

    1、SQLite 数据库 1.1、创建数据库连接 1.2、打开数据库连接 1.3、关闭数据库连接 1.4、查询数据库示例 (结果为单条数据) 1.5、查询数据库示例2(结果为多条数…

    大数据 2023年11月11日
    043
  • MMKV底层原理&与NSUserDefaults、YYCache的比较

    Tencent/MMKV 调研 一、简介 二、IOS 平台使用方法 三、MMKV 与 NSUserDefaults、YYCache 的比较 四、MMKV 实现 * 数据存取 &#8…

    大数据 2023年11月12日
    045
  • 详解JS中 call 方法的实现

    摘要:本文将全面的,详细解析call方法的实现原理 本文将全面的,详细解析call方法的实现原理,并手写出自己的call方法,相信看完本文的小伙伴都能从中有所收获。 call 方法…

    大数据 2023年6月2日
    084
  • Flink DataStream API

    DataStream API主要可为分为三个部分,DataSource模块、Transformation模块以及DataSink模块。 DataSource模块 内置DataSou…

    大数据 2023年6月3日
    079
  • python sql转义_在Python和sqlite中转义字符

    在Python和sqlite中转义字符 我有一个python脚本读取原始电影文本文件到sqlite数据库。 我使用re.escape(title)在执行插入操作之前将转义字符添加到…

    大数据 2023年11月12日
    051
  • Hive SQL时间函数及用法

    Hive SQL时间函数 当前官方提供的日期函数共27个,内容如下: 函数: current_timestamp返回值:timestamp返回查询计算开始时的当前时间戳(从Hive…

    大数据 2023年11月12日
    034
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球