Loading

应急响应必备技能

2.1 系统排查

在对受害主机进行排查时,首先要对主机系统基本排查,方便进行了解

2.1.1 系统基本信息

Windows系统 概况

	·系统信息工具->【msinfo】->查看本地计算机的硬件资源,组件,正在运行的服务,驱动,加载的模块;
	·正在运行任务->在系统信息窗口,单机正在运行的服务查看运行任务的名称,路径,进程id;
	·服务->系统信息里面的服务窗口,查看服务名称,状态,路径等信息;
	·系统驱动程序->软件环境中的系统驱动程序窗窗口,查看驱动程序的名称,描述,文件;
	·加载的模块->加载的模块窗口,查看名称,路径等信息;
	·启动的程序->查看启动程序的命令,用户名,位置;
	·简单了解->查看主机名,操作系统等信息;

linux系统 概况

对于linux系统的主机排查,可以查看相关命令查看CPU(中央处理器)信息,操作系统信息及模块信息等
	·CPU信息->【lscpu】查看cpu型号,内核,主频
	·操作系统信息->【uname-a】查看当前操作系统信息【cat /proc/version】
	·模块信息->【lsmod】查看已经载入系统模块信息

2.1.2 用户信息

服务器被入侵,攻击者需要隐藏或者克隆账号,方便远控
	·创建系统名称账号,混淆视听
	·激活系统中的默认账户
	·建立一个隐藏账号,在账号后面加$

windows系统 用户信息

	·命令行方法->【net user】收集用户信息 【net user username】查看某个账户信息
	·图形界面方法->cdm输入【lusrmgr.msc】查看是否有可疑的用户
	·注册表方法->cmd输入【regedit】选择【HKEY_LOCAL_MACHINE】下的【SAM】
			  ->为该项添加【允许父项的继承权限传播到该对象和所有子对象】
			  ->以及【用在此显示的可以应用到子对象的项目替代所有子对象的权限项目】权限
			  ->使当前用户拥有SAM的读取权限->添加后按【F5】,查看子用户并查看信息
			  ->导出所有以00000开头的项,将导出的值与000001F4(对应的administrator用户)导出内容对比。F值相同,则为克隆账户
	·wmic方法->提供从命令行接口和批命令脚本执行系统管理支持->【wmic username get name,SID】命令,查看系统中的用户信息

linux系统 用户信息

	·查看系统所有用户信息->【cat /etc/passwd】‘用户名’‘密码加密’‘用户ID’‘用户组ID’‘注释’‘用户主目录’‘默认登录shell’
												bin/bash 表示可以登录 sbin/nologin表示不可以登录
	·分析超级权限用户->【awk -F: '{if($3==0)print $1}' /etc/passwd】
	·查看可登录的账户->【cat /etc/passwd | grep 'bin/bash'】
	·查看用户错误的登录信息->【lastb】查看错误的登录方法,ip地址,时间等
	·查看所有用户最后的登录信息->【lastlog】查看系统中所有用户的登录信息
	·查看用户最近登录信息->【last】 wtmp存储登录成功 btmp存储登录失败 utmp存储当前登录的信息 last -f /var/run/utmp /wtmp /btmp
	·查看当前用户登录系统情况->【who】查看当前用户信息
	·查看空口令账户->【awk -F: 'length($2)==0{print $1}' /etc/passwd】

2.1.3 启动项

启动项是病毒后门等持久化驻留的一种常见方法,在应急响应中是必要的排查

windows系统 启动项

windows系统中的自启动文件是按照两个文件夹和5个核心注册表子健来自动加载程序的
	·通过【系统配置】对话框查看->命令行【msconfig】,点击启动可查看启动项的详细信息
	·通过注册表查看
		注册表是操作系统中一个重要的数据库,主要用于存储系统所必须的信息。注册表以分层的组织形式存储数据元素。数据项是注册表的
		基本元素,每个数据项下面不但可以存储很多子数据项,还可以以键值对存储数据。很多病毒木马通过注册表来实现在系统中的持久化
		驻留。
	·注册表目录含义
		(1)HKEY_CLASSES_ROOT_(HKCR):此处存储的信息可确保在windows资源管理器中执行时打开正确的程序,它还包含有关拖放规则,
		     快捷方法和用户界面信息的更多详细信息
		(2)HKEY_CURRENT_USER(HKCU):包含用户的配置信息,有用户的文件夹,屏幕颜色和控制面板设置
		(3)HKEY_USERS(HKU):包含系统上所有用户配置文件的配置信息,有应用程序配置和可视设置
		(4)HKEY_LOCAL_MACHINE(HKLM):包含运行操作系统的计算机硬件特定信息,安装的驱动器列表及安装硬件和应用程序的通用配置
		(5)HKEY_CURRENT_CONFIG(HCU):存储有关系统当前配置的信息,有应用程序配置和可视配置

linux系统 启动项

启动项是恶意病毒实现持久化驻留的一种常用手段,使用以下方法可以查找启动项相关内容
	·查看init.d文件夹下的rc.local文件内容;【cat /etc/init.d/rc.local】
	·查看rc.loacl文件内容;【cat /etc/rc.local】
	·查看init.d文件夹下所有文件的详细信息;【ls -alt /etc/init.d】

2.1.4 任务计划

任务计划也是恶意病毒实现持久化驻留的一种常用手段,因此在应急响应中需要重点排查

windows系统 计划任务

任务计划是windows系统的一个预置实现某些操作的功能,利用这个功能还可实现自启动的目的
	·【计算机管理】【系统工具】【任务计划程序】【任务计划程序库】->查看计划任务的名称,状态,触发器
	·powershell输入【Get-ScheduledTask】->查看当前系统中所任务计划的信息,包括任务计划的路径,名称,状态
	·命令行计划工具【schtasks】,成员为administrators组里的成员

linux系统 计划任务

linux系统中,计划任务也是维持权限和远程下载恶意软件的一种方法
	·查看当前计划任务【crontab -l】【crontab -u root -l】【crontat -l】
	·查看etc目录下的任务计划文件【ls /etc/cron*】

2.1.5 其他

windows防火墙最基本的用途是对出,入站的数据包进行检测
防火墙是在内部网络(如企业内部网)与外部网络(如Intemet网)之间,实施安全防范的系统,它属于一种访问控制机制,是用来确定哪些外部服务允许内部访问及哪些内部服务允许外部访问。
防火墙遵循“一切未被允许的即为禁止”的原则,说明防火墙应封锁所有信息流,之后对所需提供的服务逐项开放,形成一种非常安全的环境,使网络工作井井有序。这样,只有经过仔细挑选的
服务才被允许使用,而那些认为不合用户要求的服务则被拒之“墙”外。
	·查看当前防火墙网络配置状态【netsh fireshall show state】

2.2 进程排查

进程(process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统的基。在早期面向进程设计的计算机结果中,进程是程序的基本执行实      
 体;在面向线程设计的计算机结构中,进程是线程的容器。
无论是在windows还是linux中,主机在感染恶意进程后,恶意程序都会启动相应的进程,来完成相关的恶意软件,有的软件会启动相应的守护进程来对恶意进程进行守护。

windows系统 进程

对于windows系统中的进程排查,主要是找到恶意进程的PID,程序路径,有时还要找到PPID(PID的父进程)及程序加载的DLL。
	·打开【任务管理器】添加【命令行】【映射路径名称】重点关注进程的映像路径名称及命令行是否可疑,从而进一步排查
命令行输入【tasklist】,显示运行在计算机中的所有进程,可查看进程的映像名称,PID,会话名
	·查看每个进程和服务的对应情况【tasklist /svc】
	·对于加载某些动态链接库文件(DLL)的恶意进程,可用【tasklist /m】  【lt】小于 【gt】大于
监控TCP/IP链接,网络接口信息【netstat】 排查时,【netstat -ano | finder "ESTABLISHED"】查看当前的网络连接,定位可疑的已连接
	·定位出Pid,在通过【tasklist | find"XXXX"】命令,查看具体的程序
	·快速定位到端口对应的程序【netstat -anb】
使用powershell进行排查,有时对于有守护程序的进程,还要确定子父进程之间的关系,可以使用powershell查看
	·调用wmi对象,【Get-wmiobjectwin32_process | select name,processid,parentprocessid,path】命令
使用wmic命令进行查询
	·使用【wmic process】,可以对进程情况进行查询
	·删除PID为某值的进程,【wmic process where processid=[PID] delete】

linux系统 进程

可使用【netstat -alnt】查看网络连接命令 根据PID的值,利用【ls -alt /proc/PID】查看其对应的课执行程序
使用【lsod -p PID】查看进程打开的文件 【kill -9 PID】命令结束进程
【rm -rf filename】删除木马文件,如果root用户无法删除相关文件,可能加上了i属性
【lastter filename】可查看文件属性 【chatter -i filename】可移除i属性,进而删除文件
有的进程还可能存在守护进程,可以先把进程挂起,查杀守护进程,再进行查杀;
除此之外还有隐藏进程,可以躲避排查,按顺序执行【ps -ef | awk 'print' | sort -n | uniq >1】【ls /proc | sort -n |uniq >2】【diff 1 2】
挖矿进程可以使用【top】来查看

2.3 服务排查

服务可以理解为运行在后台的进程。这些服务可以在计算机启动自启动;服务作为一种运行在后台的程序,是恶意程序的驻留方法

windows系统 自启动服务

【service.msc】打开服务窗口,查看所有的服务项,包括服务的名称,描述,状态等

linux系统 服务

【chkconfig --list】命令,可以查看系统运行的服务 1表示单用户 2表示无网络连接的多用户命令行模式 3表示有网络连接的命令行模式
	4表示不可以用 5表示带图形界面的多用户模式 6表示重启  

2.4 文件痕迹排查

大部分的恶意文件都会对恶意软件,木马,病毒留下痕迹,排查思路:
	·对恶意软件常用的敏感路径进行排查
	·在确定了应急响应事件的时间点后,对事件前后的文件进行排查
	·对带有特征的恶意软件进行排查,这些特征包括代码关键字或关键函数文件权限特征等

windows 文件系统 文件痕迹

恶意软件基于敏感目录的位置驻留
	·有些程序释放子体(恶意程序运行时投放出来的文件)一般会在程序中写好投放的目录,因临时目录的路径相对统一,因此子体一般存于临时目录;
	·攻击者会下载一些工具及利用环境,排查浏览器的历史记录;
	·查看用户Rencent文件,Rencent文件主要存储了最近运行文件的快捷方式,可通过分析最近运行的文件,排查可疑文件
		c:\Documents and settings\Adminstrators(系统用户名)\Recent
		c:\Documents and Settings\Default User\Recent
	·预读取文件夹查看,Prefetch是预读取文件夹,用来存放系统已访问过的文件的预读取信息,扩展名为pf,之所以创建Prefetch文件夹,是为了加快系统启动的进程;windows系统运用预读取技术,实际用到设备驱动器程序,服务和shell程序之前装入他们,这种优化也被用到软件上,系统对每个应用软件的前几次启动情况进行分析,然后创建一个描述应用需求的内存镜像,并把这些信息保存在windows\prefetch文件夹中。win7只记录128个可执行文件信息,windows8-10可以记录1024个可执行文件,一旦建立了映像,之后会提升速度;cmd输入【%SystemRoot%\Prefetch\】打开此文件夹,排查该文件夹;Amcache.exe文件也可以查询应用程序的执行路径,上次执行的时间及SHA1值;cmd输入【%SystemRoot%\appcompat\Programs】
恶意软件基于时间点的查找
	应急时间发生后,先确认发生的时间点,排查时间点前后文件的变动情况,从而缩小排查的范围;
	·列出攻击日期内新增的文件,windows系统中,【forfiles】命令,查找相关文件;还可以根据文件列表的修改时间进行排序查找可疑文件;
	·对文件的创建时间,修改时间,访问时间进行排查;(注意逻辑上的问题)
	·对webshell的方法可以通过上述方法再进一步排查,还可以使用D盾,HwsKill,Webshellkill等工具对文件进行规则查询,以检查相关的webshell

linux 基于文件的分析

敏感目录的查找
	·/tmp目录和命令目录/usr/bin /usr/sbin等经常作为恶意软件下载目录及相关文件被替换的目录  【ls -alt】
	·~/.ssh及/etc/ssh也经常作为一些后门配置的路径,需要排查
时间点的查找
	·通过列出攻击日期内变动的文件,可发现相关的恶意软件
		【find】:在指定目录下查找文件 -mtime -n +n按更改时间来查找文件 -n指n天以内 +n指n天前 -atime 按照文件访问时间 -ctime按照文件创建时间
		【find/ -ctime 0 -name "*.sh"】可查找一天内新增的sh文件 【ls -alt | head -n 10】查看排序后前10行的内容
	·对文件的创建时间,修改时间,访问时间进行访问
		【stat】查看文件的创建时间,修改时间,访问时间
特殊文件的查找
	linux系统中的恶意文件存在特定的位置
		·特殊权限文件查找【find /tmp -perm 777】发现crloger8文件
		·webshell查找,webshelld查找可以通过分析文件,流量,日志进行,基于文件的命名特征和内容特征,相对操作性较高,通过分析文件的关键字查找
			对文件进行筛选,缩小排查的范围 【find /var/www/ -name "*.php"】查找/var/www 目录下所有的php文件
		·对系统命令进行排查,【ls】【ps】等命令可能被恶意替换【ls -alt /bin】查看命令目录中相关系统命令被修改的时间【ls -alh/bin】看文件大小
		·linux的后门检测可以使用(chkrootkit,rkhunter)进行查杀,前者检查rootkit是否安装,且可以定时检测系统安全
			后者进行系统命令检测(Binary),MD5检验,rootkit检测,本机敏感目录检测,系统配置检测,服务及套件异常检测,第三方应用检测
		·检测SUID程序,既对于一些设置了SUID权限的程序进行排查,可以使用【find /-type f -perm -04000 -ls -uid 0 2>/dev/null】 

2.5 日志分析

windows日志分析

在windows系统中,日志文件包括:系统日志,安全性日志,应用程序日志,在高版本中:
	系统日志:%SystemRoot%\System32\Winevt\Logs\System.evtx
	安全性日志:%SystemRoot%\System32\Winevt\Logs\Security.evtx
	应用程序日志:%SystemRoot%\System32\Winevt\Logs\Application.evtx
·系统日志主要是指windows系统中的各个组件在运行时产生的各种安全事件,系统中各种驱动程序在运行中出现的问题,操作系统的多种组件在运行中
	 出现的重大问题及应用软件在运行中出现的重大问题,包括重要数据的丢失,错误,以及系统产生的崩溃行为
·安全性日志主要记录了各种与安全相关的时间,构成该日志的主要内容:各种登录与退出系统的成功和不成功的信息,对系统中的各种重要资源进行
	 的各种操作,对系统文件进行的创建,删除,更改等操作
·应用程序日志主要记录各种应用程序所产生的各类事件,比如SQL sever数据库被暴力破解,还可以运行中输入【enentvwr】打开事件查看器,应急响应
	 中还会用到powershell日志
	windows系统中的每个事件都有相应的时间id,高版本如下:
		事件ID	  名      称	                           描   述
		4624	用户登录成功	大部分登录事件成功时会产生的日志
		4625	用户登录失败	大部分登录事件失败时会产生的日志
		4672	特殊权限用户登录	特殊权限登录日志,登录administrator,一般看到4624和4672日志一起出现
		4648	显式凭证登录	一些其他的登录情况,使用runas/user以其他用户身份运行产生的日志
日志分析就是在众多的日志中找出自己需要的日志
	·使用日志筛选器可以对记录时间,事件级别,任务类别,关键字等信息进行筛选
	·通过powershell对日志进行分析,需要有管理员权限
		【Get-EventLog】只获取传统的事件日志【Get-WinEvent】是从传统的事件日志(如系统日志和应用程序日志)和新Windows事件日志技术生成的事件日志中获取事件,还会获取Windows事件跟踪生成的日志文件中的事件
		【Get-EventLog Security -InstanceID 4625】获取安全日志下事件ID为4625(登录失败)的所有日志信息
	·通过相关日志工具进行分析【FullEventLog View】【Event Log Explorer】【Log Parser】

linux系统日志分析

linux系统日志一般在目录【var/log】下,具体日志功能如下:
·/var/log/wtmp:记录登录进入,退出,数据交换,关机和重启,既last	        /var/loguserlog:记录所有等级用户信息的日志
·/var/log/cron:记录与定时任务相关的日志信息	   /var/log/xferlog(vsftpd.log):记录Linux FTP日志
·/var/log/messages:记录系统重启后的信息和错误日志	   /var/log/lastlog:记录登录的用户,可以使用命令lastlog命令
·/var/log/apache2/access.log:记录Apache的访问日志	   /var/log/secure:记录大多数应用账号输入的账号和密码,以及登录成功与否
·/var/log/auth.log:记录系统授权信息,包括用户登录和使用的权限机制	   /var/log/faillog:记录登录不成功的账号信息
【cat /var/log/vron】:查看任务计划相关的操作日志【cat /var/log/messages】查看整体系统信息,也记录了用户切换到root权限的日志
【cat /var/log/secure】:查看验证和授权信息【ls -alt /var/spool/mail】查看邮件相关日志信息
【cat /var/spool/mail/root】:针对80端口的攻击行为,可向系统配置的邮箱报警

linux及其他日志分析

对于Linux系统日志的分析主要使用【grep】【sed】【sort】【awk】等命令
常用查询日志命令及功能如下:
	【tail - n 10 dudu.log】:查询最后的10行命令
	【tail -n +10 dudu.log】:查询10行之后的命令
	【tail -n 10 dudu.log】:查询头10行的命令
	【head -n -10 dudu.log】:查询除了最后10行的其他所有日志
在*.log日志文件中统计独立IP地址个数的命令如下:
	【awk '{print $1}'dudu.log | sort | uniq | wc -l】
	【awk '{print $1}'/access.log | sort | uniq -c | sort -nr| wc -l】
查找指定时间段日志的命令如下:
	【sed -n'/2021-1-1 15:17:20/,/2021-2-2 15:17:20/p' dudu.log】
	【grep'2021-12-17 15:12:20' dudu.log】
定位有多少IP在暴破主机root
	【cat /var/log/secure |awk '/Accepted/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}'(CentOS)】
查看登录成功的IP地址的命令如下:
	【cat /var/log/auth.log |awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}')(ubuntu)】
查看登陆成功日期,用户名,IP地址的命令如下:
	【grep "Accepted" /var/log/secure | awk'{print $1,$2,$3,$9,$11}'】
IIS日志的位置:
	【%SystemDrive%\inetpub\Logs\LogFiles】
	【%SystemRoot%\System32\LogFiles\W3SVC1】
	【%SystemDrive%\inetpub\logs\Logfiles\W3SVC1】
	【%SystemDrive%\Windows\System32\LogFiles\HTTPERR】
Apache日志的位置:
	【/var/log/httpd/access.log】
	【/var/log/httpd-access.log】
	【/var/log/apache/access.log】
	【/var/log/apache2/access.log】
Nginx日志的位置:
	【/usr/loacl/nginx/logs】access.log代表访问日志,error.log代表错误日志,没有默认路径下,可以到nginx.conf配置文件中查找
Tomcat日志默认位于【$TOMCAT_HOME/logs】
Vsftp日志的位置:
	默认,vsftp不单独记录日志,存放于【/var/log/messages】中,但是可以通过编辑/etc/vsftp/vsftp.conf配置文件来启用单独的日志
weblogic日志的位置:
	access log在 $MW_HOME\user_projects\domains\<domain_name>\servers\<server_name>\logs\access.log
	server log在 $MW_HOME\user_projects\domains\<domain_name>\servers\<server_name>\logs\<server_name>.log
	domain log在 $MW_HOME\user_projects\domains\<domain_name>\servers\<adminserver_name>\logs\<domain_name>.log
Oracle数据库查看方法:
	【select * from v$logfile】命令,可查询日志路径。日志文件记录在$ORACLE/rdbms/log目录下,【select * from v$sql】
Mysql数据库查看方法:
	【show variables like 'log_%'】命令,查看是否启用,日志若开启,则默认路径为/var/log/mysql/ 【show variables like 'general'】命令,可查看日志位置
MsSQL数据库查看方法:
	一般无法观看,SQL Sever Management Studio,在“管理-SQL sever日志”中查看
#
posted @ 2021-04-19 23:23  九~月  阅读(102)  评论(0编辑  收藏  举报