首页技术文章正文

Linux 入侵检测分析技术【黑马Linux培训】

更新时间:2021年03月18日 09时14分50秒 来源:黑马程序员

黑马中级程序员课程

1、概述
最好的安全防护当然是“御敌于国门之外”, 通过安全防护技术,来保证当前主机不被非授权人员入侵,但是“道高一尺,魔高一丈”, 再好的防护手段、往往也会有疏漏的地方。在这种情况下,事后(入侵后)的追溯技术就很重要了。好比一个窃贼到我们家溜达一圈,我竟然无法知道是否窃贼来过,细思这是一件非常恐怖的事情。这就意味着,我们的家(主机)不在安全,鬼知道窃贼什么时候再来溜达一圈。
入侵分析技术一般通过是通过分析主机关键的文件记录、进程信息等来达到分析主机是否被侵入的目的。从安全防护的角度来讲,这是一项事后追踪技术(可追溯性);从攻击的角度来说, 当Hack成功实施攻击(入侵)后,要进行掩踪灭迹,也就是清除入侵痕迹,当知道入侵分析哪些地方后,那么作为入侵者也就明白需要重点关注哪些入侵痕迹了。
所谓“未知攻,焉知防”, 同样也可以说“未知防,焉知攻”, 攻防之道,本就是在攻防博弈中相互提高。

2. 环境
本次介绍的入侵分析技术基于环境如下:
l 发行版:
Panda.Guo@2018-04-18 10:42:55 $ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 9.4 (stretch)
Release:    9.4
Codename:   stretch
l 内核
Panda.Guo@2018-04-18 10:59:33 $ uname -a
Linux PandaGuo 4.9.0-6-amd64 #1 SMP Debian 4.9.82-1+deb9u3 (2018-03-02) x86_64 GNU/Linux

3. Debian 9 入侵分析

3.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用户为“需重点关照”用户
2.进一步分析用户itcast
3.查看用户id和组信息:
Panda.Guo@2018-04-18 11:45:40 $ id itcast
  uid=2001(itcast) gid=2001(itcast) group=2001(itcast)
l 查看用户最近登录信息
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
l 查看用户历史登录信息: 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
l 查看用户登录失败信息:
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 $
l 查看综合信息: 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登录, 则需重点关注

3.2 可提权用户(sudo)
Debian系统允许普通用户通过sudo来获取root用户权限, 因此对于已经存在的普通用户,如果其在/etc/sudoers或者/etc/sudoers.d/下的文件中, 则表示此普通用户可以通过sudo来完成root操作, 需要特别关注。
另可以通过命令groups itcast(其中itcast指代需要关注的用户username), 如果该用户所属的组是root或者 sudo组,或者该用户在/etc/sudoers(包括/etc/sudoer.d/目录), 那就需要重点关注了。

3.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
  。。。
入侵后,留下一些开机自起的服务,以便后续继续入侵。也是入侵保持持久性的一种手段。

3.4 计划(定时)任务
除了开机自启动服务外, Debian还可以通过计划任务来进行持久化运行。
检查异常的计划任务相对简单:
只需要查看/etc/crontab以及子目录下/etc/cron.*的计划任务文件即可.

3.5 shell的初始化
不同的Linux发行版的默认shell是不一致的, 一般debian系统默认是dash, 而我自己偏爱bash, 一般系统安装完成后,我会调整我的shell为bash, 本节以bash为例进行描述。
对于shell来说,可分为交互shell/非交互shell、 登录shell和非登录shell。本质上就是在shell启动期间,默认执行的配置文件不同而已。 关于这块的详细区别,可参考man bash 中的INVOCATION章节。或者参考下图:
简单分析如下:
l 非交互/非登录shell: $BASh_ENV(环境变量)
l 非交互/登录shell:/etc/profile ($HOME/.bash_profile、$HOME/.bash_login、$HOME/.profile按次序先存在的执行)
l 交互/非登录shell: /etc/bash_bashrc、$HOME/.bashrc
l 交互/登录shell:/etc/profile ($HOME/.bash_profile、$HOME/.bash_login、$HOME/.profile按次序先存在的执行)
上面描述的比较复杂。简单说,就是bash在启动时,要执行几个脚本文件。 这些文件中如果有命令,在某种情况下(登录非登录、交互非交互)可能会被执行。 入侵分析的重点就是查看这些文件中是否存在可疑命令。

3.6 历史命令
一般而言, 入侵者获取shell之后会在上面执行某些命令, 我们可以通过history命令来查看曾经运行过的命令.或者直接查看~/.bash_history文件. 高明的入侵者完成入侵后,也会进行某些掩踪灭迹。 因此, 如果发现曾经运行过的命令中有一些可疑命令(莫名奇妙的命令),或者发现history被恶意清除,或者被异常篡改, 这也是我们常用的入侵分析技术。
和history命令相关有几个环境变量,需要我们特别关注,详情可通过man bash 查看
l HISTFILE: 保存历史命令的文件, 默认是 ~/.bash_history
l HISTFILESIZE: 历史文件中包含的最大行数。
l HISTSIZE: 命令历史中保存的命令数量行数。
l HISTTIMEFORMAT: 保存历史命令的时间格式。

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

3.8 可疑进程
一般可通过top命令查看正在运行的程序所占用的资源, 或者用ps aux列出当前系统所用的进程. 如果发现可疑进程(没见过、耗资源), 可以用以下命令进一步:
l 查看该进程启动的完整命令行: ps eho command -p $PID
l 查看该进程启动时候所在的目录: readlink /proc/$PID/cwd
l 查看该进程启动时的完整环境变量: strings -f /proc/$PID/environ | cut -f2 -d ‘ ‘
l 列出该进程所打开的所有文件: lsof -p $PID
如果某个可疑进程正在活动,一般会与外界有网络交互,可通过如下方法进一步分析:
l 查看当前主机的网络连接情况, netstat -apn | grep $PID
l 抓包分析,tcpdump 或者 使用图形化抓包工具wireshark
l 查看主机防火墙iptables, DNS(/etc/resolv.conf和/etc/resolvconf/)、http代理,或者/etc/hosts, 都可能会导致我们正常的网络请求被攻击者监听并篡改. 这些小小的修改也许不是很明显,可一旦发现自身网络环境’不太对劲’, 就要提高警惕, 仔细排查了.

4. 小结
我们研究入侵分析,从“攻”的角度来说,是为了在“实施攻击”后,在“掩踪灭迹”中做的更加彻底,更便于我们攻击的持久性, 从“防”的角度来说, 我了解主机系统被入侵后,知道在哪些地方会留下痕迹,通过收集这些入侵痕迹,结合大数据的分析技术来绘制入侵者的攻击路线图。以便更好的防护。


传智播客黑马程序员C/C++与网络攻防学科培养专项白帽子安全人才,课程包含 C语言开发实战、C高级编程、C++核心编程与桌面应用开发、Linux高并发服务器开发、信息安全与企业应用开发、分布式云平台开发、入侵检测与网络攻防等阶段。 黑马程序员C/C++与网络攻防课程关键技术点 涉及到的热门技术有:· Nginx(高并发反向代理服务器) ·GIT(分布式版本控制系统) ·Redis(NoSQL缓存数据库) ·Memcache(key-value分布式缓存数据库) ·Libevent(高并发反应堆模式API) ·Epoll(Linux内核高级多路IO技术) ·GDB(逆向工具) ·SHM(共享内存映射机制) ·VIM(文本编辑器) ·QT(跨平台应用界面框架) 涉及到的新兴技术有: ·fastDFS(分布式文件系统) ·Golang(Google推出的开发编程语言) ·Docker(虚拟化容器技术) ·Go-micro(Go语言微服务框架) ·Beego(Go语言高性能web服务器框架) ·GEO(地理位置核心算法) ·ASN.1(跨平台安全传输协议) ·RPC(远程调用过程) ·Oracle(高级事务关系型数据库) 涉及到的网络攻防技术有: ·Kali Linux(Hacker操作系统) ·Wireshark(网络抓包分析工具) ·Aircrack-ng(可破解WEP/WPA/WPA2加密) ·AppScan(漏洞扫描工具) ·DDos(分布式拒绝服务攻击) ·Web渗透(Web页面代码的攻击形式) ·iptables(Linux内核防火墙技术) ·NetCat(网络攻击瑞士军刀) ·TCPDump(Linux内核网络协议捕捉器) ·SQLMAP(SQL注入漏洞攻防技能) 关于本次中国黑客与网络攻防的内容我们就讲解到这里,如果大家想要了解更多的内容,可以随时关注我们C/C++与网络攻防版块,我们会随时为大家分享更多有益的文章。



推荐了解热门学科

java培训Python人工智能Web前端培训PHP培训
区块链培训影视制作培训C++培训产品经理培训
UI设计培训新媒体培训产品经理培训Linux运维
大数据培训智能机器人软件开发




传智播客是一家致力于培养高素质软件开发人才的科技公司“黑马程序员”是传智播客旗下高端IT教育品牌。自“黑马程序员”成立以来,教学研发团队一直致力于打造精品课程资源,不断在产、学、研3个层面创新自己的执教理念与教学方针,并集中“黑马程序员”的优势力量,针对性地出版了计算机系列教材50多册,制作教学视频数+套,发表各类技术文章数百篇。

传智播客从未停止思考

传智播客副总裁毕向东在2019IT培训行业变革大会提到,“传智播客意识到企业的用人需求已经从初级程序员升级到中高级程序员,具备多领域、多行业项目经验的人才成为企业用人的首选。”

中级程序员和初级程序员的差别在哪里?
项目经验。毕向东表示,“中级程序员和初级程序员最大的差别在于中级程序员比初级程序员多了三四年的工作经验,从而多出了更多的项目经验。“为此,传智播客研究院引进曾在知名IT企业如阿里、IBM就职的高级技术专家,集中研发面向中高级程序员的课程,用以满足企业用人需求,尽快补全IT行业所需的人才缺口。

何为中高级程序员课程?

传智播客进行了定义。中高级程序员课程,是在当前主流的初级程序员课程的基础上,增加多领域多行业的含金量项目,从技术的广度和深度上进行拓展“我们希望用5年的时间,打造上百个高含金量的项目,覆盖主流的32个行业。”传智播客课程研发总监于洋表示。




黑马程序员热门视频教程

Python入门教程完整版(懂中文就能学会)零起点打开Java世界的大门
C++| 匠心之作 从0到1入门学编程PHP|零基础入门开发者编程核心技术
Web前端入门教程_Web前端html+css+JavaScript软件测试入门到精通


分享到:
在线咨询 我要报名
和我们在线交谈!