网络安全(五)--Linux 入侵检测分析技术

8. Linux 入侵检测分析技术

  • 目标
    • 了解入侵检测分析的基本方法
    • 掌握查看登录失败用户的方法
    • 掌握查阅历史命令的方法
    • 掌握检查系统开机自启服务的方法

8.1. 概述

最好的安全防护当然是“域敌于国门之外”, 通过安全防护技术,来保证当前主机不被非授权人员入侵,但是“道高一尺,魔高一丈”, 再好的防护手段、往往也会有疏漏的地方。在这种情况下,事后(入侵后)的追溯技术就很重要了。好比一个窃贼到我们家溜达一圈,我竟然无法知道是否窃贼来过,细思这是一件非常恐怖的事情。这就意味着,我们的家(主机)不在安全,鬼知道窃贼什么时候再来溜达一圈。

入侵分析技术一般通过是通过分析主机关键的文件记录、进程信息等来达到分析主机是否被侵入的目的。从安全防护的角度来讲,这是一项事后追踪技术(可追溯性);从攻击的角度来说, 当Hack成功实施攻击(入侵)后,要进行掩踪灭迹,也就是清除入侵痕迹,当知道入侵分析哪些地方后,那么作为入侵者也就明白需要重点关注哪些入侵痕迹了。

所谓“未知攻,焉知防”, 同样也可以说“未知防,焉知攻”, 攻防之道,本就是在攻防博弈中相互提高。

8.2. 入侵分析

8.2.1. 用户帐号

从攻击的角度来讲,Hacker实施攻击后,除了会“掩踪灭迹”之外还会进行“创建后门”,以便将这种攻击的机会持续下去,而创建后门用户帐号,往往是比较可行的途径。

  1. 搜寻具备shell用户的帐号, /etc/passwd
Panda.Guo@2018-04-18 11:34:31 $ cat /etc/passwd|awk -F: '{print $7}'| sort |uniq -c
  3 /bin/bash
  21 /bin/false
  1 /bin/sync
  17 /usr/sbin/nologin
Panda.Guo@2018-04-18 11:45:31 $ cat /etc/passwd | grep "bash"
  root:x:0:0:root:/root:/bin/bash
  panda:x:1000:1000:panda,,,:/home/panda:/bin/bash
  itcast:x:2001:2001::/home/itcast:/bin/bash
Panda.Guo@2018-04-18 11:45:40 $

对其中有shell的用户需要重点关注,本文假设itcast用户为“需重点关照”用户

  1. 进一步分析用户itcast

  2. 查看用户id和组信息:

Panda.Guo@2018-04-18 11:45:40 $ id itcast 
  uid=2001(itcast) gid=2001(itcast) group=2001(itcast)
  • 查看用户最近登录信息
Panda.Guo@2018-04-18 11:51:33 $ lastlog -u itcast 
Username         Port     From             Latest
itcast           pts/10   127.0.0.1        Thu Apr 12 19:03:20 +0800 2018
  • 查看用户历史登录信息: last hacker
Panda.Guo@2018-04-18 11:51:35 $ last itcast 
itcast   pts/10       127.0.0.1        Thu Apr 12 19:03 - 10:16  (15:12)
itcast   pts/6        172.16.28.59     Thu Apr 12 16:03 - 16:03  (00:00)
itcast   pts/6        172.16.28.59     Thu Apr 12 16:02 - 16:03  (00:00)

wtmp begins Sun Apr  1 23:41:17 2018
  • 查看用户登录失败信息:
Panda.Guo@2018-04-18 11:52:45 $ sudo lastb itcast
itcast   ssh:notty    127.0.0.1        Thu Apr 12 19:03 - 19:03  (00:00)
itcast   ssh:notty    172.16.28.59     Thu Apr 12 16:03 - 16:03  (00:00)

btmp begins Tue Apr  3 09:20:30 2018
Panda.Guo@2018-04-18 11:52:49 $ 
  • 查看综合信息: finger hacker
Panda.Guo@2018-04-18 11:53:20 $ finger itcast
Login: itcast                     Name: 
Directory: /home/itcast                 Shell: /bin/bash
Last login Thu Apr 12 19:03 (CST) on pts/10 from 127.0.0.1
No mail.
No Plan.

如果itcast用户登录有异常的IP登录, 则需重点关注

8.2.2. 可提权用户(sudo)

Debian系统允许普通用户通过sudo来获取root用户权限, 因此对于已经存在的普通用户,如果其在/etc/sudoers或者/etc/sudoers.d/下的文件中, 则表示此普通用户可以通过sudo来完成root操作, 需要特别关注。

另可以通过命令groups itcast(其中itcast指代需要关注的用户username), 如果该用户所属的组是root或者 sudo组,或者该用户在/etc/sudoers(包括/etc/sudoer.d/目录), 那就需要重点关注了。

8.2.3. 开机自启服务

不同的Linux发行版,采用的服务管理器是不同的, Debian 8以上已经采用Systemd作为服务器管理器,其实目前较新的发行版系统上多在采用systemd。本次我们以Systemd为例来分析开机自起的一些程序。

对于systemd服务管理器来说,可以通过下述方式查看开机自启的服务:

Panda.Guo@2018-04-18 15:25:23 $ systemctl list-unit-files --type=service | grep "enabled"
  accounts-daemon.service                    enabled
  anacron.service                            enabled
  auditd.service                             enabled
  autovt@.service                            enabled
  。。。

入侵后,留下一些开机自起的服务,以便后续继续入侵。也是入侵保持持久性的一种手段。

8.2.4. 计划(定时)任务

除了开机自启动服务外, Debian还可以通过计划任务来进行持久化运行。

检查异常的计划任务相对简单:

只需要查看/etc/crontab以及子目录下/etc/cron.*的计划任务文件即可.

8.2.5. shell的初始化

不同的Linux发行版的默认shell是不一致的, 一般debian系统默认是dash, 而我自己偏爱bash, 一般系统安装完成后,我会调整我的shell为bash, 本节以bash为例进行描述。

对于shell来说,可分为交互shell/非交互shell、 登录shell和非登录shell。本质上就是在shell启动期间,默认执行的配置文件不同而已。 关于这块的详细区别,可参考man bash 中的INVOCATION章节。或者参考下图: 

简单分析如下:

  • 非交互/非登录shell: $BASh_ENV(环境变量)
  • 非交互/登录shell:/etc/profile ($HOME/.bash_profile$HOME/.bash_login$HOME/.profile按次序先存在的执行)
  • 交互/非登录shell: /etc/bash_bashrc$HOME/.bashrc
  • 交互/登录shell:/etc/profile ($HOME/.bash_profile$HOME/.bash_login$HOME/.profile按次序先存在的执行)

    上面描述的比较复杂。简单说,就是bash在启动时,要执行几个脚本文件。 这些文件中如果有命令,在某种情况下(登录非登录、交互非交互)可能会被执行。 入侵分析的重点就是查看这些文件中是否存在可疑命令。

8.2.6. 历史命令

一般而言, 入侵者获取shell之后会在上面执行某些命令, 我们可以通过history命令来查看曾经运行过的命令.或者直接查看~/.bash_history文件. 高明的入侵者完成入侵后,也会进行某些掩踪灭迹。 因此, 如果发现曾经运行过的命令中有一些可疑命令(莫名奇妙的命令),或者发现history被恶意清除,或者被异常篡改, 这也是我们常用的入侵分析技术。

history命令相关有几个环境变量,需要我们特别关注,详情可通过man bash 查看

  • HISTFILE: 保存历史命令的文件, 默认是 ~/.bash_history
  • HISTFILESIZE: 历史文件中包含的最大行数。
  • HISTSIZE: 命令历史中保存的命令数量行数。
  • HISTTIMEFORMAT: 保存历史命令的时间格式。

8.2.7. 系统日志

在debian9上,系统日志统一由rsyslog进程产生, 和rsyslog相关的配置可参考/etc/rsyslog.conf文件以及/etc/rsyslog.d/目录。

  • 登录相关信息
    • 查看每个用户最近的登录时间和ip: lastlog
    • 查看每个用户的登录记录: last
    • 查看每个用户的登录尝试(包括失败的)记录: lastb
    • 查看当前登录的用户,ip以及正在执行的命令: w
  • 一些常见的系统日志介绍如下:
    • /var/log/messages: 一般的系统日志
    • /var/log/kern.log: 系统内核日志
    • /var/log/boot.log: 系统启动日志
    • /var/log/auth.log: 登录相关的日志, 比如ssh/sudo成功失败的日志都在这里
    • /var/log/cron.d: cron计划任务的执行日志
  • 审计, 审计日志由auditd产生,/etc/audit/auditd.conf为审计配置文件,/etc/audit/audit.rules 为审计规则文件。
    • /var/log/audit/* : 为审计记录,可以进一步分析,也许可以发现一些意想不到的痕迹(如果有的话).

8.2.8. 可疑进程

一般可通过top命令查看正在运行的程序所占用的资源, 或者用ps aux列出当前系统所用的进程. 如果发现可疑进程(没见过、耗资源), 可以用以下命令进一步:

  • 查看该进程启动的完整命令行: ps eho command -p $PID
  • 查看该进程启动时候所在的目录: readlink /proc/$PID/cwd
  • 查看该进程启动时的完整环境变量: strings -f /proc/$PID/environ | cut -f2 -d ‘ ‘
  • 列出该进程所打开的所有文件: lsof -p $PID

如果某个可疑进程正在活动,一般会与外界有网络交互,可通过如下方法进一步分析:

  • 查看当前主机的网络连接情况, netstat -apn | grep $PID
  • 抓包分析,tcpdump 或者 使用图形化抓包工具wireshark
  • 查看主机防火墙iptables, DNS(/etc/resolv.conf/etc/resolvconf/)、http代理,或者/etc/hosts, 都可能会导致我们正常的网络请求被攻击者监听并篡改. 这些小小的修改也许不是很明显,可一旦发现自身网络环境’不太对劲’, 就要提高警惕, 仔细排查了.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/227167.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【链表Linked List】力扣-117 填充每个节点的下一个右侧节点指针II

目录 问题描述 解题过程 官方题解 问题描述 给定一个二叉树: struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 N…

IT行业软件数据文件传输安全与高效是如何保障的?

在当今迅速发展的科技世界中,云计算、大数据、移动互联网等信息技术正迎来蓬勃发展,IT行业正置身于一个全新的世界。数据不仅是最重要的资产,也是企业竞争力的核心所在。然而,如何缩短信息共享时间、高速流转数据、跨部门/跨区域协…

最新版本——Hadoop3.3.6单机版完全部署指南

大家好,我是独孤风,大数据流动的作者。 本文基于最新的 Hadoop 3.3.6 的版本编写,带大家通过单机版充分了解 Apache Hadoop 的使用。本文更强调实践,实践是大数据学习的重要环节,也能在实践中对该技术有更深的理解&…

企业计算机服务器中了mallox勒索病毒如何处理,Mallox勒索病毒解密

随着计算机技术的不断发展,越来越多的企业利用网络来提高工作效率,但随之而来的网络安全威胁也在不断增加,各种勒索病毒种类不断增加,给企业的数据安全带来严重的威胁,影响企业的生产业务开展。近期,云天数…

微信小程序js数组对象根据某个字段排序

一、排序栗子 注: 属性字段需要进行转换,如String类型或者Number类型 //升序排序 首元素(element1)在前 降序则(element1)元素在后 data data.sort((element1, element2) >element1.属性 - element2.属性 ); 二、代码 Page({/*** 页面的初始数据*/data: {user:…

【Flink系列三】数据流图和任务链计算方式

上文介绍了如何计算并行度和slot的数量,本文介绍Flink代码提交后,如何生成计算的DAG数据流图。 程序和数据流图 所有的Flink程序都是由三部分组成的:Source、Transformation和Sink。Source负责读取数据源,Transformation利用各种…

idea本地调试hadoop 遇到的几个问题

1.DEA对MapReduce的toString调用报错:Method threw ‘java.lang.IllegalStateException‘ exception. Cannot evaluate org.apache.hadoop.mapreduc 解决方法:关闭 IDEA 中的启用“ tostring() ”对象视图 2.代码和hdfs路径都对的情况下,程序…

【EI会议征稿】第三届密码学、网络安全和通信技术国际会议(CNSCT 2024)

第三届密码学、网络安全和通信技术国际会议(CNSCT 2024) 2024 3rd International Conference on Cryptography, Network Security and Communication Technology 随着互联网和网络应用的不断发展,网络安全在计算机科学中的地位越来越重要&…

MySQL 中Relay Log打满磁盘问题的排查方案

MySQL 中Relay Log打满磁盘问题的排查方案 引言: MySQL Relay Log(中继日志)是MySQL复制过程中的一个重要组件,它用于将主数据库的二进制日志事件传递给从数据库。然而,当中继日志不断增长并最终占满磁盘空间时&…

5组10个共50个音频可视化效果PR音乐视频制作模板

我们常常看到的图形跟着音乐跳动,非常有节奏感,那这个是怎么做到的呢?5组10个共50个音频可视化效果PR音乐视频制作模板满足你的制作需求。 PR音乐模板|10个音频可视化视频制作模板05 https://prmuban.com/36704.html 10个音频可视化视频制作…

论文阅读——Deformable ConvNets v2

论文:https://arxiv.org/pdf/1811.11168.pdf 代码:https://github.com/chengdazhi/Deformable-Convolution-V2-PyTorch 1. 介绍 可变形卷积能够很好地学习到发生形变的物体,但是论文观察到当尽管比普通卷积网络能够更适应物体形变&#xff…

华为OD机试 - 攀登者2(Java JS Python C)

题目描述 攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。 地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。其中数组元素0代表地面。 例如:[0,1,2,4,3,1,0,0,1,2,3,1,2,1,0],代表如下图所示的地图,地图中有两个山脉位置分别为 1,2,3,4,5…

Qt 如何使用VTK显示点云

开发环境 ubuntu 20.04 VTK 8.2 编译VTK 下载源码 git clone --recursive https://gitlab.kitware.com/vtk/vtk.git 使用版本管理工具,切换版本到8.2 更改编译选项,这里使用cmake-gui进行配置 1、编译类型修改为Release 2、安装路径可以设置&#xf…

Appium 并行测试多个设备

一、前置说明 在自动化测试中,经常需要验证多台设备的兼容性,Appium可以用同一套测试运例并行测试多个设备,以达到验证兼容性的目的。 解决思路: 查找已连接的所有设备;为每台设备启动相应的Appium Server&#xff1b…

【头歌系统数据库实验】实验7 SQL的复杂多表查询-1

目录 第1关:求各颜色零件的平均重量 第2关:求北京和天津供应商的总个数 第3关:求各供应商供应的零件总数 第4关:求各供应商供应给各工程的零件总数 第5关:求重量大于所有零件平均重量的零件名称 第6关&#xff1…

字节开源的netPoll底层LinkBuffer设计与实现

字节开源的netPoll底层LinkBuffer设计与实现 为什么需要LinkBuffer介绍设计思路数据结构LinkBufferNodeAPI LinkBuffer读 API写 APIbook / bookAck api 小结 本文基于字节开源的NetPoll版本进行讲解,对应官方文档链接为: Netpoll对应官方文档链接 netPoll底层有一个…

IntelliJ IDEA开启git版本控制的简单教程

这篇文章想要分享一下怎么在IntelliJ IDEA开启版本控制,博主使用的是gitee,首先需要安装git,关于git的安装这里就不介绍了,很简单。 目录 创建git仓库 创建项目 开启版本控制 拉取项目 创建git仓库 首先,需要登录…

python 使用 AppiumService 类启动appium server

一、前置说明 在Appium的1.6.0版本中引入了AppiumService类,可以很方便的通过该类来管理Appium服务器的启动和停止。 二、操作步骤 import osfrom appium.webdriver.appium_service import AppiumService as OriginalServerfrom libs import pathclass AppiumSer…

office办公技能|ppt插件使用

PPT插件获取:链接:https://pan.baidu.com/s/1BOmPioUKeY2TdC-1V-o3Vw 提取码:tdji 一、ppt插件介绍 PPT插件是一种可以帮助用户在Microsoft PowerPoint软件中添加各种额外功能和效果的应用程序。使用PPT插件可以让用户更加轻松地制作出专业、…

No Chromedriver found that can automate Chrome ‘x.x.xxxx‘的解决办法

一、前置说明 在使用Appium对Android设备自动化测试时,切换WebView时抛出异常: selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: No Chromedriver foun…