入侵检测与防御实验

第一章 入侵检测

一、原理

入侵检测系统,简称IDC,是一种基于硬件的防火墙,通过建控以知系统漏洞,黑客入侵手法并记录下来,通过分析数据包,安全的就通过。危险的就拦截,通过日志记录可轻松追查到入侵者的IP,用于取证。

入侵检测技术(IDS)可以被定义为对计算机和网络资源的恶意使用行为进行识别和相应处理的系统。包括系统外部的入侵和内部用户的非授权行为,是为保证计算机系统的安全而设计与配置的一种能够及时发现并报告系统中未授权或异常现象的技术,是一种用于检测计算机网络中违反安全策略行为的技术。

1.1 什么是入侵

入侵,就是恶意攻击者(俗称黑客),不经授权的控制、使用我方资源(读写文件、执行命令、控制网络资源等)

1.2 入侵和内鬼

入侵本身是手段,GetShell只是开始,目的是为了之后对资源的控制和数据的窃取。而内鬼本身拥有合法的权限,可以合法接触敏感资产,但是基于工作以外的目的对这些资源进行非法处置,包括拷贝副本、转移外泄、篡改数据牟利等

二、入侵的本质

2.1 入侵检测的本质

根据特征进行模式匹配;(黑特征法,例如WebShell关键字匹配)

根据业务历史行为(生成基线模型),对入侵行为做异常对比;(非白既黑),如果业务的历史行为不够收敛,就用加固的手段对其进行收敛,再挑出不合规的小众异常行为。

2.2 入侵检测与攻击向量

针对一个明确的“目标”,它被访问的渠道可能是有限集,被攻击的必经路径也有限。一个可以成功入侵的 攻击方法 + 目标 合并起来,就称为一个“攻击向量”

因此,谈入侵检测模型效果时,需要先明确攻击向量,针对不同的攻击路径,采集对应的数据,才可能做对应的检测模型。比如,基于SSH登录后的SHELL命令采集,是不会让你发现Webshell的攻击的。而基于网络流量的采集数据,也不会让你获悉黑客是否在SSH后的SHELL环境里执行了什么文件切割打包的动作。

2.3 常见的入侵手法

  1. 高危服务入侵:所有的公共服务都叫做高危端口
  2. Web入侵:基于PHP、JAVA、ASP/http://ASP.NET、NODE、C写的cgi等等动态的Web服务本身的漏洞
  3. 0day入侵 :通过NSA泄漏的工具包
  4. 通过办公网入侵 :绝大多数APT报告里,黑客是先对人下手,比如发个邮件,哄骗你打开后,控制了你的PC,再进行长期的观察/翻阅,拿到你的合法凭据后,再到内网漫游

2.4 常见入侵的应对方法

  1. 高危服务入侵:在这里做入侵检测的必要性不高,因为高危服务的具体所指非常的多,不一定存在通用的特征,所以,通过加固方式,收敛攻击入口才是更有效的策略。禁止所有高危端口对互联网开放即可
  2. Web入侵:找到黑客GetShell和正常业务行为的一些区别
  3. 0day入侵:入侵检测模型可以通用

三、 发现APT

所谓APT,就是高级的持续威胁。既然是高级的,按照一般的描述,他们的木马是免杀的(不能假定我们可以发现这个木马)、他们的漏洞不公开的(不能假定我们可以加固抵抗)、他们的手法是高级的(不能假定这个手法在已知的范畴里)。

所以,实际上APT的意思就几乎等同于我们不能发现的入侵事件了。

但是,业界总还有APT检测产品、解决方案的厂商在混饭吃,他们是怎么做的呢?

  • 说木马免杀的,他们用沙箱+人工分析,哪怕效率低一些,还是试图做出定性,并快速的把IOC(威胁情报)同步给其它客户,发现1例,全网都去排查。
  • 说流量变形对抗的,他们用异常检测的模型,把一些不认识的可疑的IP关系、payload给识别出来——当然,识别出来之后,也要运营人员跟进得仔细才能定性。
  • 说攻击手法高级的,他们还是会假定黑客就用鱼叉、水坑之类的已知手法去执行,然后在邮箱附件、PC终端等环节采集日志,对用户行为进行分析,UEBA试图寻找出用户异于平常的动作。

第二章 蜜罐(部署实验)

一、蜜罐原理

1.1 什么是蜜罐

蜜罐其实就是一个“陷阱”程序,这个陷阱是指对人侵者而特意设计出来的-些伪造的系统漏洞。这些伪造的系统漏洞,在引诱入侵者扫描或攻击时,就会激活能够触发报警事件的软件。这样一来,网管就可以立即知晓有入侵者侵入了。

也就是说通过设置蜜罐程序,一旦操作系统中出现入侵事件,那么系统就可以很快发出报警。在许多大的网络中。一般都设计有专门的蜜罐程序。蜜罐程序一般分为两种:一种是只发现人侵者而不对其采取报复行动,另一种是同时采取报复行动。

0K,在进行了初步的了解后,请读者先来牢记两个英文的含义:

Honeypot:是一种故意存在着缺陷的虛拟系统,用来对黑客进行欺骗。
Honeynet:是一个很有学习价値的工具,它能使我们了解黑客人侵的攻击方式。

作为一个包含漏洞的系统,它可以帮助有特殊要求的网络模拟出一个或多个易受攻的主机,给xp系统下载黑客提供易受攻击的口标,让黑客误认为入侵成功,可以为所欲为了。使用蜜罐,主要是为了能够套住黑客,以便网络保安系统和人员能够将之“锁定”。

1.2 蜜罐分类

  1. 低交互:模拟服务和漏洞以便收集信息和恶意软件,但是攻击者无法和该系统进行交互;
  2. 中等交互:在一个特有的控制环境中模拟一个生产服务,允许攻击者的部分交互;
  3. 高交互:攻击者可以几乎自由的访问系统资源直至系统重新清除恢复。

1.3 什么是pentbox

基于Ruby开发,面向GNU/Linux系统,且兼容Windows、MacOS、Android等系统。

主要用于帮助安全人员对网络、系统的安全性和稳定性进行测试。但它常被用作黑客工具套件,尤其是它提供的NetDoSTest(网络压力测试)。

二、安装和使用Pentbox

2.1 解压

入侵检测与防御实验_第1张图片

2.2 修改pentbox.rb,注释生成日志文件

查看文件夹:
在这里插入图片描述
修改pentbox.rb
入侵检测与防御实验_第2张图片

2.3 penbox界面

入侵检测与防御实验_第3张图片
根据上面选项,选择Network Tool。然后进行以下选择:
入侵检测与防御实验_第4张图片
若有人连接则会显示

2.4 目标机尝试连接已安装Pentbox的机子(ip:10.5.10.42)

目标机用浏览器连接机子后,机子展示界面:
入侵检测与防御实验_第5张图片

HONEYPOT ACTIVATED ON PORT 80其中80域名

第三章 后门检测工具

一、实验原理

1.1 rootkit简介

rootkit是Linux平台下最常见的一种木马后门工具,它主要通过替换系统文件来达到入侵和和隐蔽的目的,这种木马比普通木马后门更加危险和隐蔽,普通的检测工具和检查手段很难发现这种木马。rootkit攻击能力极强,对系统的危害很大,它通过一套工具来建立后门和隐藏行迹,从而让攻击者保住权限,以使它在任何时候都可以使用root权限登录到系统

rootkit主要有两种类型:文件级别内核级别,下面分别进行简单介绍。

  1. 文件级别rootkit
    文件级别的rootkit一般是通过程序漏洞或者系统漏洞进入系统后,通过修改系统的重要文件来达到隐藏自己的目的。在系统遭受rootkit攻击后,合法的文件被木马程序替代,变成了外壳程序,而其内部是隐藏着的后门程序。通常容易被rootkit替换的系统程序有login、ls、ps、ifconfig、du、find、netstat等,其中login程序是最经常被替换的,因为当访问Linux时,无论是通过本地登录还是远程登录,/bin/login程序都会运行,系统将通过/bin/login来收集并核对用户的账号和密码,而rootkit就是利用这个程序的特点,使用一个带有根权限后门密码的/bin/login来替换系统的/bin/login,这样攻击者通过输入设定好的密码就能轻松进入系统。此时,即使系统管理员修改root密码或者清除root密码,攻击者还是一样能通过root用户登录系统。攻击者通常在进入Linux系统后,会进行一系列的攻击动作,最常见的是安装嗅探器收集本机或者网络中其他服务器的重要数据。在默认情况下,Linux中也有一些系统文件会监控这些工具动作,例如ifconfig命令,所以,攻击者为了避免被发现,会想方设法替换其他系统文件,常见的就是ls、ps、ifconfig、du、find、netstat等。如果这些文件都被替换,那么在系统层面就很难发现rootkit已经在系统中运行了。

这就是文件级别的rootkit,对系统维护很大,目前最有效的防御方法是定期对系统重要文件的完整性进行检查,如果发现文件被修改或者被替换,那么很可能系统已经遭受了rootkit入侵。检查件完整性的工具很多,常见的有Tripwire、 aide等,可以通过这些工具定期检查文件系统的完整性,以检测系统是否被rootkit入侵。

  1. 内核级别的rootkit
    内核级rootkit是比文件级rootkit更高级的一种入侵方式,它可以使攻击者获得对系统底层的完全控制权,此时攻击者可以修改系统内核,进而截获运行程序向内核提交的命令,并将其重定向到入侵者所选择的程序并运行此程序,也就是说,当用户要运行程序A时,被入侵者修改过的内核会假装执行A程序,而实际上却执行了程序B。

内核级rootkit主要依附在内核上,它并不对系统文件做任何修改,因此一般的检测工具很难检测到它的存在,这样一旦系统内核被植入rootkit,攻击者就可以对系统为所欲为而不被发现。目前对于内核级的rootkit还没有很好的防御工具,因此,做好系统安全防范就非常重要,将系统维持在最小权限内工作,只要攻击者不能获取root权限,就无法在内核中植入rootkit。

1.2 chkrootkit的缺点

chkrootkit在检查rootkit的过程中使用了部分系统命令,因此,如果服务器被黑客入侵,那么依赖的系统命令可能也已经被入侵者替换,此时chkrootkit的检测结果将变得完全不可信。为了避免chkrootkit的这个问题,可以在服务器对外开放前,事先将chkrootkit使用的系统命令进行备份

1.3 rootkit后门检测工具RKHunter

RKHunter是一款专业的检测系统是否感染rootkit的工具,它通过执行一系列的脚本来确认服务器是否已经感染rootkit。在官方的资料中,RKHunter可以作的事情有:

MD5校验测试,检测文件是否有改动
检测rootkit使用的二进制和系统工具文件
检测特洛伊木马程序的特征码
检测常用程序的文件属性是否异常
检测系统相关的测试
检测隐藏文件
检测可疑的核心模块LKM
检测系统已启动的监听端口

二、软件chkrootkit

2.1 安装chkrootkit

从官网上下载安装,安装完成:
入侵检测与防御实验_第6张图片
注:上图中的错误并不影响下面的操作

2.2 复制一份文件到 /usr/local/chkrootkit路径下,将原有带版本号的删除

cd ..
cp -r chkrootkit-* /usr/local/chkrootkit
  拷贝一份文件
rm -rf chkrootkit-*

2.3 使用chkrootkit

安装完的chkrootkit程序位于/usr/local/chkrootkit目录下,执行如下命令即可显示chkrootkit的详细用法,如图下所示:
/usr/local/chkrootkit/chkrootkit -h
入侵检测与防御实验_第7张图片
下面是为上图的各参数进行解释,含义如图下所示:

-h 显示帮助信息
-v 显示版本信息
-l 显示测试内容
-d debug模式,显示检测过程的相关指令程序
-q 安静模式,只显示有问题的内容
-x 高级模式,显示所有检测结果
-r dir设置指定的目录为根目录
-p dir1:dir2:dirN指定chkrootkit检测时使用系统命令的目录

chkrootkit的使用比较简单,直接执行chkrootkit -x进入高级模式,显示所有检测结果,检测结果如图下所示:
/usr/local/chkrootkit/chkrootkit -x
入侵检测与防御实验_第8张图片

三、软件RKHunter

3.1 安装RKHunter

官网:http://www.rootkit.nl/projects/rootkit_hunter.html
解压之后进入目录,对文件进行编译,结果如图下所示:

cd rkhunter-1.4.6
./installer.sh --layout default --install

安装成功:
入侵检测与防御实验_第9张图片
下图是对常用参数以及含义的解释:

-c, --check必选参数,表示检测当前系统
–configfile 使用特定的配置文件
–cronjob作为cron任务定期运行
–sk, --skip-keypress自动完成所有检测,跳过键盘输入
–summary显示检测结果的统计信息
–update检测更新内容
-V, --version显示版本信息
–versioncheck检测最新版本

3.2 使用RKHunter

下面是通过rkhunter对某个系统的检测,结果如图下所示:
执行:/usr/local/bin/rkhunter -c

  1. 下面是第一部分,先进行系统命令的检查,主要是检测系统的二进制文件,因为这些文件最容易被rootkit攻击。显示OK字样表示正常,显示Warning表示有异常,需要引起注意,而显示“Not found”字样,一般无需理会。
    入侵检测与防御实验_第10张图片
  2. 下面是第二部分,主要检测常见的rootkit程序,显示“Not found”表示系统未感染此rootkit,结果如图所示:
    入侵检测与防御实验_第11张图片
  3. 下面是第三部分,主要是一些特殊或附加的检测,例如对rootkit文件或目录检测、对恶意软件检测以及对指定的内核模块检测,结果如图下所示:
    入侵检测与防御实验_第12张图片
  4. 下面是第四部分,主要对网络、系统端口、系统启动文件、系统用户和组配置、SSH配置、文件系统等进行检测,结果如图所示:
    入侵检测与防御实验_第13张图片
  5. 下面是最后一部分,这个部分其实是上面输出的一个总结,通过这个总结,可以大概了解服务器目录的安全状态,结果如图所示:
    入侵检测与防御实验_第14张图片

第四章 Surikata入侵检测系统

一、简介

1.1 Suricata简介

Suricata是一个高性能的网络IDS,IPS和网络安全监控引擎

IPS:入侵预防系统(IPS: Intrusion Prevention System)是电脑网络安全设施,是对防病毒软件(Antivirus Programs)和防火墙(Packet Filter, Application Gateway)的补充。 入侵预防系统(Intrusion-prevention system)是一部能够监视网络或网络设备的网络资料传输行为的计算机网络安全设备,能够即时的中断、调整或隔离一些不正常或是具有伤害性的网络资料传输行为。是新一代的侵入检测系统(IDS)。

Suricata是一个网络入侵检测和防护引擎,由开放信息安全基金会及其支持的厂商开发。该引擎是多线程的,内置支持IPV6。可加载现有的Snort规则和签名,支持Barnyard 和 Barnyard2 工具.

IDS:英文“Intrusion Detection Systems”的缩写,中文意思是“入侵检测系统”。依照一定的安全策略,通过软、硬件,对网络、系统的运行状况进行监视,尽可能发现各种攻击企图、攻击行为或者攻击结果,以保证网络系统资源的机密性、完整性和可用性。

Barnyard:知名的开源IDS的日志工具,具有快速的响应速度,优异的数据库写入功能,是做自定义的入侵检测系统不可缺少的插件。

1.2 Suricata 入侵检测系统

随着安全威胁的不断发生,入侵检测系统(IDS)在如今的数据中心环境中显得尤为必要。然而,随着越来越多的服务器将他们的网卡升级到10GB/40GB以太网,对如此线路上的硬件进行计算密集型的入侵检测越来越困难。其中一种提升入侵检测系统性能的途径是多线程入侵检测系统,它将 CPU 密集型的深度包检测工作并行的分配给多个并发任务来完成。这样的并行检测可以充分利用多核硬件的优势来轻松提升入侵检测系统的吞吐量。在这方面有两个知名的开源项目,分别是 Suricata 和 Bro.

二、安装

2.1 安装命令

  1. 需要安装依赖包:
    apt-get -y install libpcre3 libpcre3-dbg libpcre3-dev build-essential autoconf automake libtool libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libmagic-dev libcap-ng-dev libjansson-dev pkg-config
  2. 下载安装包
    wget http://www.openinfosecfoundation.org/download/suricata-2.0.8.tar.gz
  3. 进入目录后,编译相应模块(对suricata模块进行编译),然后编译安装
cd suricata-2.0.8
./configure --sysconfdir=/etc --localstatedir=/var
make && make install
  1. make install-rules安装IDS规则集,由于下载所读过慢,所以直接查看下载完的规则集:ls /root/apps/rules
    入侵检测与防御实验_第15张图片
  2. Suricata源代码随带默认的配置文件,不妨安装这些默认的配置文件,结果如图下所示:
    入侵检测与防御实验_第16张图片
  3. 让系统共享动态链接库ldconfig

2.2 配置 Suricata IDS

  1. 打开配置文件查看基本配置信息,结果如图下所示:
    指令:vi /etc/suricata/suricata.yaml
    入侵检测与防御实验_第17张图片
  2. 为default-log-dir关键字指定 Suricata 日志文件所在的位置,结果如图所示:
    在这里插入图片描述
  3. 找到vars部分,配置对Suricata来说重要的变量,结果如图所示:
    入侵检测与防御实验_第18张图片
  4. 找到threading 部分,你可以为不同的 Suricata 线程指定 CPU 关联,结果如图下所示:
    入侵检测与防御实验_第19张图片

三、使用

  1. 多种模式
    Suricata 支持许多运行模式。运行模式决定着 IDC 会使用何种线程。以下命令可以查看所有可用的运行模式,结果如图所示:
    指令:/usr/local/bin/suricata --list-runmodes
    入侵检测与防御实验_第20张图片

2.将主目录suricata-2.0.8/rlues下的tls-events.rules,复制到/etc/suricata/rules下
指令:

cd suricata-2.0.8/rules/
cp tls-events.rules /etc/suricata/rules
  1. 删除rules文件,防止重名,创建目录rules,将下载的规则集也复制到/etc/suricata/rules下。
    指令:
rm /etc/suricata/rules
mkdir /etc/suricata/rules
cp /root/apps/rules/* /etc/suricata/rules
  1. 再将本身自带的规则也添加到/etc/suricata/rules目录。
    指令:cp /root/suricata-2.0.8/rules/* /etc/suricata/rules/

  2. 将 Suricata 运行起来,结果如图所示:
    指令:/usr/local/bin/suricata -c /etc/suricata/suricata.yaml -i eth0 --init-errors-fatal
    在这里插入图片描述
    注:图中的警告可以忽略,它只是意味着你的网卡不支持LRO。

  3. 查看ip地址并创建hongya用户和密码。

ifconfig
useradd hongya
passwd hongya
  1. 登录目标机,进行ssh连接操作机。
    指令:ssh [email protected]
    入侵检测与防御实验_第21张图片

  2. 执行完 按ctrl+c结束 然后vi查看/var/log/suricata/fast.log日志文件,因为suricata检测日志存储在/var/log/suricata目录下,结果如图下所示:
    指令:vi /var/log/suricata/fast.log
    入侵检测与防御实验_第22张图片

第五章 安装高级入侵检测环境到centos

一、简介

AIDE的基本功能

对CentOS来说,最流行的入侵检测系统之一就是AIDE。这种系统可以创建数据库,用来核实你机器上文件的完整性。AIDE的主要功能如下:

支持md5、sha1、rmd160、tiger、crc32、sha256和sha512摘要算法
支持这些文件类型:权限、Inode、UID、GID、链接名称、大小、块数量、链接数量、mtime、ctime和atime等文件属性
支持这些文件系统属性:Posix ACL、SELinux、XAttrs和Extended
支持正则表达式,可以选择性地添加或排除文件/目录
支持GZIP数据库压缩

二、安装

  1. 安装指令:yum install aide

  2. 初始化:aide --init

  3. 运行检查,初始化数据库后,它会创建/var/lib/aide/aide.bb.new.gz,执行命令aide --check进行检查,结果如图所示:
    在这里插入图片描述
    从上图中我们可以看出命令失败了,那是因为,要想使用AIDE来运行检查,数据库必须位于/var/lib/aide/aide.db.gz.。为了解决这个问题,你得使用这个命令更名刚创建的数据库,然后在运行检查结果如图下所示:
    执行命令:mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
    再执行:aide --check
    入侵检测与防御实验_第23张图片
    注:我们这里面的数据库没有修改东西,所以全部文件都匹配,否则会生成一份报告

  4. 不妨测试一下AIDE的准确性。创建假文件/usr/bin/aidetest,结果如图所示:

touch /usr/bin/aidetest
cd /usr/bin

我们再次运行aide --check进行检查,结果如图下所示:
入侵检测与防御实验_第24张图片
—本文完—

你可能感兴趣的:(实验,安全)