当前位置: 首页 > Linux

Linux入侵检测与分析技术

时间:2023-04-06 06:03:56 Linux

1.概述最好的安全保护当然是“御敌于外”。采用安全防护技术,确保当前主机不被未授权人员侵入。魔鬼高十尺”,防护措施再好,也常有疏漏。在这种情况下,事后(入侵后)溯源技术就很重要了。就像小偷到我们家溜达一样,也不知道小偷有没有来过。想想,这是一件很可怕的事情。这意味着我们的家(宿主)已经不安全了,谁知道小偷什么时候又来了。入侵分析技术一般通过分析主机的关键文件记录和进程信息来达到分析主机是否被入侵的目的。从攻击的角度来看,当Hack成功实施攻击(入侵)后,就需要覆盖和消除痕迹,也就是清除入侵的痕迹。当你知道入侵是从哪里分析出来的,那么作为入侵者,你就会知道您需要关注哪些入侵痕迹。所谓“不知攻,何以知守”,也可以说“不知守,何以知攻”,攻防之道,就是在攻防博弈中相互提高。2.环境本次介绍的入侵分析技术基于以下环境:lReleaseversion:Panda.Guo@2018-04-1810:42:55$lsb_release-a没有可用的LSB模块。经销商ID:Debian描述:DebianGNU/Linux9.4(stretch)发布:9.4代号:stretchlkernelPanda.Guo@2018-04-1810:59:33$uname-aLinuxPandaGuo4.9.0-6-amd64#1SMPDebian4.9.82-1+deb9u3(2018-03-02)x86_64GNU/Linux3.Debian9入侵分析3.1用户账户从攻击的角度来看,Hacker在攻击后不仅会“掩盖消失”,还会“创建后门”,这样攻击的机会就会继续存在,而创建后门用户帐户通常是更可行的途径。1、搜索shell用户的账号,/etc/passwdPanda.Guo@2018-04-1811:34:31$cat/etc/passwd|awk-F:'{print$7}'|排序|uniq-c3/bin/bash21/bin/false1/bin/sync17/usr/sbin/nologinPanda.Guo@2018-04-1811:45:31$cat/etc/passwd|grep"bash"root0:0:root:/root:/bin/bashpanda1000:1000:panda,,,:/home/panda:/bin/bashitcast2001:2001::/home/itcast:/bin/bashPanda.郭@2018-04-1811:45:40$带壳用户关注。本文假设itcast用户为“需要关注”的用户2.进一步分析用户itcast3.查看用户id和组信息:Panda.Guo@2018-04-1811:45:40$iditcastuid=2001(itcast)gid=2001(itcast)group=2001(itcast)l查看用户最近登录信息Panda.Guo@2018-04-1811:51:33$lastlog-uitcastUsernamePortFromLateStitcastPTS/10127.0.0.1THUAPR1219:03:20+08002018L查看用户历史记录登录信息:最后HackerPanda.guo@2018-04-1811:51:35$最后ItcastCastPTSApr1219:03-10:16(15:12)itcastpts/6172.16.28.594月12日星期四16:03-16:03(00:00)itcastpts/6172.16.28.59ThuApr1216:02-16:03(00:00)wtmpbeginsSunApr123:41:172018l查看用户登录失败信息:Panda.Guo@2018-04-1811:52:45$sudolastbitcastitcastssh:notty127.0.0.1ThuApr1219:03-19:03(00:00)itcastssh:notty172.16.28.59ThuApr1216:03-16:03TuetAprsgin)(309:20:302018Panda.Guo@2018-04-1811:52:49$l查看综合信息:fingerhackerPanda.Guo@2018-04-1811:53:20$fingeritcastLogin:itcast/bashLastloginThuApr1219:03(CST)onpts/10from127.0.0.1Nomail.NoPlan.如果itcastuserlogin有异常IPlogin,需要关注*3.2提升用户(sudo)*Debian系统允许普通用户通过sudo获得root用户权限,所以对于已有的普通用户,如果在/etc/sudoers或/etc/sudoers.d/下的文件中,则表明该普通用户可以通过sudo完成root操作,并且需要特别注意,也可以使用命令groupsitcast(其中itcast是指需要注意的用户用户名),如果用户所属的组是root或者sudo组,或者用户在/etc/sudoers(包括/etc/sudoer.d/目录),那么你需要重点关注它。*3.3开机服务*不同的Linux发行版使用不同的服务管理器。Debian8及以上版本已采用Systemd作为服务器管理器。事实上,大多数较新的发行版目前都使用systemd。本次我们以Systemd为例,分析一些从boot启动的程序。对于systemd服务管理器,可以通过以下方式查看自启动服务:Panda.Guo@2018-04-1815:25:23$systemctllist-unit-files--type=service|grep"enabled"Accounts-Daemon.service已启用Anacron.service已启用Auditd.service已启用Autovt@.Service已启用。..入侵后留下一些开机后启动的服务,方便以后继续入侵。这也是入侵保持持久性的一种手段。*3.4计划(scheduled)任务*Debian除了在启动时自启动服务外,还可以通过计划任务进行持久化操作。查看定时任务异常比较简单:只需要??查看/etc/crontab及其子目录/etc/cron.*中的定时任务文件即可。3.5Shell初始化不同Linux发行版默认的shell不一致,一般debian系统默认是dash,但我更喜欢bash。一般在系统安装完成后,我会将自己的shell调整为bash。本节以bash为例进行说明。对于shell,可以分为交互shell/非交互shell、登录shell和非登录shell。本质上,在shell启动时,默认执行的配置文件是不同的。这块的详细区别可以参考manbash中的INVOCATION章节。或者参考下图:简单分析如下:l非交互/非登录shell:$BASh_ENV(环境变量)l非交互/登录shell:/etc/profile($HO??ME/.bash\_profile,$HOME/.bash_login,$HOME/.bash_login,$HOME/.profile按优先顺序执行)l交互/非登录shell:/etc/bash_bashrc,$HOME/.bashrcl交互/登录shell:/etc/profile($HOME/.bash\_profile,$HOME/.bash_login,$HOME/.profile依次执行)上面的描述比较复杂。简单的说,bash启动的时候,需要执行几个脚本文件。如果这些文件中有命令,可能在某些情况下(登录非登录,交互非交互)执行。入侵分析的重点是查看这些文件中是否存在可疑命令。*3.6历史命令*一般来说,入侵者获得shell后,会在上面执行一些命令。我们可以使用history命令来查看已经运行过的命令。或者直接查看~/.bash_history文件。一个聪明的入侵者在完成入侵之后,还会进行一些跟踪和擦除。因此,如果发现运行过的命令中有一些可疑命令(莫名其妙的命令),或者发现历史被恶意清除,或者被异常篡改,这也是我们常用的入侵分析技术。history命令相关的环境变量有几个,需要我们特别注意。具体可以通过manbash查看lHISTFILE:保存历史命令的文件,默认为~/.bash_historylHISTFILESIZE:历史文件中包含的最大行数。lHISTSIZE:命令历史中保存的命令行数。lHISTTIMEFORMAT:保存历史命令的时间格式。*3.7系统日志*在debian9上,系统日志统一由rsyslog进程生成。rsyslog相关的配置请参考/etc/rsyslog.conf文件和/etc/rsyslog.d/目录。l登录相关信息查看各用户最近登录时间和ip:lastlog查看各用户登录记录:last查看各用户登录尝试(含失败)记录:lastb查看当前登录用户,ip和正在执行的命令:wl下面介绍一些常见的系统日志:/var/log/messages:一般系统日志/var/log/kern.log:系统内核日志/var/log/boot.log:系统启动log/var/log/auth.log:登录相关的日志,比如ssh/sudo成功和失败的日志都在这里/var/log/cron.d:cron定时任务的执行日志laudit,audit产生的日志通过auditd,/etc/audit/auditd.conf是审计配置文件,/etc/audit/audit.rules是审计规则文件。/var/log/audit/*:审计记录,可以进一步分析,说不定能发现一些意想不到的痕迹(如果有的话)。*3.8可疑进程*通常可以使用top命令查看正在运行的程序资源占用,或者使用psaux列出当前系统使用的进程。如果发现可疑进程(没见过,耗资源),可以使用如下命令更进一步:l查看进程启动的完整命令行:psehocommand-p$PIDl查看所在目录进程启动:readlink/proc/$PID/cwdl查看进程启动时的完整环境变量:strings-f/proc/$PID/environ|cut-f2-d''l列出进程打开的所有文件:lsof-p$PID如果有可疑进程处于活动状态,通常与外界交互,可以通过以下方法进一步分析:l检查当前主机的网络连接状态,netstat-apn|grep$PIDl抓包分析,tcpdump或者使用图形抓包工具wiresharkl查看主机防火墙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(高并发reactor模式API)Epoll(Linux内核高级多通道IO技术)GDB(逆向工具)SHM(共享内存映射机制)VIM(文本编辑器)QT(跨平台应用接口框架)涉及的新兴技术有:fastDFS(分布式文件系统)Golang(谷歌推出的开发编程语言)Docker(虚拟化容器技术)Go-micro(Go语言微服务框架)·Beego(Go语言高性能Web服务器框架)·GEO(地理位置核心算法)·ASN.1(跨平台安全传输协议)·RPC(远程调用过程)·Oracle(高级事务关系数据库)涉及的网络攻防技术包括:KaliLinux(Hacker操作系统)Wireshark(网络抓包分析工具)Aircrack-ng(可以破解WEP/WPA/WPA2加密)AppScan(漏洞扫描工具)DDos(分布式拒绝服务攻击)Web渗透(网页代码的攻击形式)iptables(Linux内核防火墙技术)NetCat(网络攻击瑞士军刀)TCPDump(Linux内核网络协议捕获)SQLMAP(SQL注入漏洞攻防技巧)这次我们讲解了中国黑客和网络攻防的内容。如果想了解更多,可以随时关注我们的C/C++和网络攻防版块。我们会随时为您分享更多有用的文章。