应急响应的基本思路
a. 收集信息:收集告警信息、客户反馈信息、设备主机信息等
b. 判断类型:安全事件类型判断。(钓鱼邮件、Webshll、爆破、中毒等)
c. 控制范围:隔离失陷设备
d. 分析研判:根据收集回来的信息进行分析e. 处置:根据事件类型进行处置(进程、文件、邮件、启动项、注册表排查等)
f. 输出报告
应急响应常用命令
1.linux下常用命令
1.1查看用户信息
/etc/passwd 查看用户信息文件
/etc/shadow 查看影子文件
awk -F: '$3==0{print $1}' /etc/passwd (查看系统是否还存在其他的特权账户,uid为0,默认系统只存在root一个特权账户)
who 查看当前登录用户(tty 本地登陆 pts 远程登录)
w 查看系统信息,想知道某一时刻用户的行为
uptime 查看登陆多久、多少用户,负载
passwd -d username 删除用户密码
stat /etc/passwd #查看密码文件上一次修改的时间,如果最近被修改过,那就可能存在问题。
cat /etc/passwd | grep -v nologin #查看除了不可登录以外的用户都有哪些,有没有新增的
cat /etc/passwd | grep x:0 #查看哪些用户为root权限,有没有新增的
cat /etc/passwd | grep /bin/bash #查看哪些用户使用shell
查询可以远程登录的账号:awk '/\$1|\$6/{print $1}' /etc/shadow
查询具有sudo权限的账号:more /etc/sudoers | grep -v "^#\|^$" grep "ALL=(ALL)"
1.2.历史命令
很多的服务器会有存在多用户登陆情况,登陆root用户可查看其他用户的相关账户登录信息,.bash_history保存了用户的登陆所操作的命令信息
home/root/.bash_history
history查看历史命令
cat .bash_history >>history.txt 保存历史命令
1.3.查看端口
`netstat --antp` #查看对应链接的文件路径
ls -l /proc/pid/exe ls -l /proc/*/exe | grep xxx #如果我们知道恶意程序的启动文件大致位置,可以使用这个发现无文件的恶意进程
netstat -antlp | grep 172.16.222.198 | awk '{print $7}' | cut -f1 -d"/" 通过可疑的ip地址获取程序pid
1.4.查看进程
ps -aux #查看相关pid对应程序
ps --aux | grep pid #监控某一应用线程数(如ssh)
ps -eLf | grep ssh| wc --l #监控网络客户连接数
netstat -n | grep tcp | grep 侦听端口 | wc -l
ps aux --sort=pcpu | head -10 #查看cpu占用率前十的进程,有时候可以发现
1.5.开机启动项
启动项文件:
more /etc/rc.local
/etc/rc.d/rc[0~6].d
ls -l /etc/rc.d/rc3.d/
1.6.定时任务
crontab -l #编辑定时任务
crontab --e/crontab -u root --l #查看root用户任务计划
ls /var/spool/cron/ #查看每个用户自己的执行计划
#删除计划任务且控制计划任务不能写东西
sed '/gcc.sh/d' /etc/crontab && chmod 0000 /etc/crontab && chattr +i /etc/crontab
常见的定时任务文件:
/var/spool/cron/* #centos的
/var/spool/cron/crontabs/* #ubuntu的
/var/spool/anacron/*
/etc/crontab
/etc/anacrontab
/etc/cron.hourly/*
/etc/cron.daily/*
/etc/cron.weekly/
/etc/cron.monthly/*
1.7.服务
chkconfig #查看开机启动项目
chkconfig --list (systemctl list-unit-files |grep enabled
)#查看服务自启状态
1.8.查找文件
find /home1 -name *.php ! -name index.php #find查找指定的文件
find查看最近一天修改的文件: find / -mtime -1 > /etc/aa.txt#(查看修改的文件并保存到aa的txt文档)
find . -name .svn | xargs rm --rf #查找并删除
find / -size +10000k -print:#查找大于10000k的文件
md5sum -b filename:#查看文件的md5值
1.9.top命令
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
默认top是根据cpu的占用情况进行排序的
可通过按"b"键进行切换,可切换到按照内存使用情况进行排序
top -p pid #监控指定进程
free #查看当前系统内存使用情况
top -b -n1 | head
1.10.host文件
有一些挖矿程序会修改 /etc/hosts文件
1.11.日志分析
默认日志位置:var/log
1、定位有多少IP在爆破主机的root帐号:
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
定位有哪些IP在爆破:
grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c
爆破用户名字典是什么?
grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
2、登录成功的IP有哪些:
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
登录成功的日期、用户名、IP:
grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
Linux中的命令,Diff,可以查看两个文本文件的差异。
1.12.查看命令状态
很多情况下,存在ps、netstat等一些常见命令被替换,可利用stat查看该状态,查看其修改时间
stat /bin/netstat
1.13.文件清除
很多时候会遇到无法查看文件权限或是病毒在一直向某个文件写入程序,可尝试如下命令:
lsattr [恶意文件绝对路径]命令查看权限,
使用chattr -i [恶意文件绝对路径]解除文件锁定后删除。
chmod 0000 /lib/libudev.so && rm -rf /lib/libudev.so && chattr +i /lib/(chattr +i不让lib文件被写入删除)
结束某一进程:
Kill -9 pid
2.windows下常用命令
2.1账号安全
query user 查看当前登录账户
logoff ID 注销用户id
net user 查看用户
net user username 查看用户登录情况
lusrmgr.msc 打开本地用户组
regedit注册表查看账户,确认系统是否存在隐藏账户
利用LogParser.exe查看event日志,查询用户登录情况
LogParser.exe -i:EVT "SELECT TimeGenerated,EXTRACT_TOKEN(Strings,5,'|') AS USERNAME,EXTRACT_TOKEN(Strings,5,'|') AS SERVICE_NAME,EXTRACT_TOKEN(Strings,5,'|') AS Client_IP FROM 'C:\Users\haha\Desktop\Security.evtx' WHERE EventID=4624"
LogParser.exe日志分析工具更多用法可参考:
https://wooyun.js.org/drops/windows安全日志分析之logparser篇.html
2.2检查异常端口进程
查看目前连接:
netstat -ano
一般是查看已经成功建立的连接:
netstat -ano | findstr "ESTABLISHED"
根据pid定位程序名称
tasklist | findstr "pid"
运行中输入msinfo32,可打开系统信息,在"正在运行任务"中可获取进程详细信息,包括进程的开始时间、版本、大小等信息。
根据端口查看pid
netstat -ano | findstr "8080"
利用wmic查看进程执行时的命令
Wmic process where name='irefox.exe' get name,Caption,executablepath,CommandLine ,processid,ParentProcessId /value
Wmic process where processid='2040' get name,Caption,executablepath,CommandLine ,processid,ParentProcessId /value
2.3启动项检查
msconfig查看系统启动项
查看注册表是否有异常启动项
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce
2.4查看系统定时任务
Cmd下运行schtasks(win7系统利用at),查看定时任务
C:\Windows\System32\Tasks 查看任务清单
删除任务计划
建议删除任务计划时以管理员登录
SchTasks /Delete /TN 任务计划名称
2.5查看系统服务
Services.msc
删除服务可从任务管理器中手动删除,也可使用命令:
sc stop [服务名称]停止服务后,
sc delete [服务名称]删除服务
2.6文件查看
查看最近打开的文件,运行窗口中输入"%UserProfile%\Recent"
被拿shell了如何处理
基于PDCERF模型将应急响应分成6个阶段工作:准备(Preparation)、检测(Detection)、抑制(Containment)、根除(Eradication)、恢复(Recovery)、跟踪(Follow-up)。
1.Prepare(准备):分析资产的风险、组建管理 人员团队、风险加固、保障资源储备、技术支持资源库
2.Detection(检测):日常运维监控、事件判断、事件上报:包括防火墙、系统、web服务器、IDS/WAF/SIEM中的日志,不正常或者是执行了越权操作的用户,甚至还有管理员的报告
3.Containment(抑制):抑制阶段的主要任务是限制事件扩散和影响的范围。抑制举措往往会对合法业务流量造成影响,最有效的抑制方式是尽可能地靠近攻击的发起端实施抑制
4.Eradication(根除):根除阶段的主要任务是通过事件分析查明事件危害的方式,并且给出清除危害的解决方案。
对事件的确认仅是初步的事件分析过程。事件分析的目的是找出问题出现的根本原因。在事件分析的过程中主要有主动和被动2种方式。主动方式是采用攻击诱骗技术,通过让攻击方去侵入一个受监视存在漏洞的系统,直接观察到攻击方所采用的攻击方法。被动方式是根据系统的异常现象去追查问题的根本原因。
5.Recover(恢复):主要任务是把被破坏的信息彻底地还原到正常运作状态。确定使系统恢复正常的需求和时间表、从可信的备份介质中恢复用户数据、打开系统和应用服务、恢复系统网络连接、验证恢复系统、观察其他的扫描、探测等可能表示入侵者再次侵袭的信号。
6.Follow-Up(跟踪):主要任务是回顾并整合应急响应过程的相关信息,进行事后分析总结、修订安全计划、政策、程序并进行训练以防止再次入侵,基于入侵的严重性和影响,确定是否进行新的风险分析、给系统和网络资产制定一个新的目录清单、如果需要,参与调查和起诉。这一阶段的工作对于准备阶段工作的开展起到重要的支持作用。应急响应报告、应急事件调查、应急响应总结
入侵排查
检查帐号
# 禁用或删除多余及可疑的帐号
usermod -L user # 禁用帐号,帐号无法登录,/etc/shadow 第二栏为 ! 开头
userdel user # 删除 user 用户
userdel -r user # 将删除 user 用户,并且将 /home 目录下的 user 目录一并删除
历史命令
# 历史命令
history
# 进入用户目录下,导出历史命令
cat .bash_history >> history.txt
检查异常端口
# 使用 netstat 网络连接命令,分析可疑端口、IP、PID
netstat -antlp | more
# 查看下 pid 所对应的进程文件路径
ls -l /proc/$PID/exe 或 file /proc/$PID/exe($PID 为对应的 pid 号)
检查异常进程
# 使用 ps 命令,分析进程
ps aux | grep pid
ps -ef | grep pname
检查开机启动项
# 查看运行级别命令
runlevel
# 系统默认允许级别
vi /etc/inittab
id=3:initdefault #系统开机后直接进入哪个运行级别
# 开机启动配置文件
/etc/rc.local
/etc/rc.d/rc[0~6].d
检查定时任务
# 利用 crontab 创建计划任务
# 基本命令
crontab -l # 列出某个用户cron服务的详细内容
crontab -r # 删除每个用户cront任务(谨慎:删除所有的计划任务)
crontab -e # 使用编辑器编辑当前的crontab文件
检查服务
# 服务自启动
# 第一种修改方法:
chkconfig [--level 运行级别] [独立服务名] [on|off]
chkconfig --level 2345 httpd on # 开启自启动
chkconfig httpd on # (默认 level 是2345)
# 第二种修改方法:
# 修改 /etc/re.d/rc.local 文件
# 加入 /etc/init.d/httpd start
# 第三种修改方法:
# 使用 ntsysv 命令管理自启动,可以管理独立服务和 xinetd 服务。
检查异常文件
# 查看敏感目录,如 /tmp 目录下的文件,同时注意隐藏文件夹,以".."为名的文件夹具有隐藏属性
# 得到发现 WEBSHELL、远控木马的创建时间,如何找出同一时间范围内创建的文件?
# 可以使用 find 命令来查找,如 find /opt -iname "*" -atime 1 -type f 找出 /opt 下一天前访问过的文件
# 针对可疑文件可以使用 stat 进行创建修改时间。
检查系统日志
# 日志默认存放
日志分析
Linux日志分析
1. 日志简介
日志默认存放位置:/var/log/
查看日志配置情况:more /etc/rsyslog.conf
比较重要的几个日志:
- 登录失败记录:
/var/log/btmp
(lastb
)
- 最后一次登录:
/var/log/lastlog
(lastlog
)
- 登录成功记录:
/var/log/wtmp
(last
)
- 登录日志记录:
/var/log/secure
- 目前登录用户信息:
/var/run/utmp
(w
,who
,users
)
历史命令记录:history
仅清理当前用户:history -c
|------------------|----------------------------------------------------------------------------------------|
| 日志文件 | 说明 |
| /var/log/cron | 记录了系统定时任务相关的日志 |
| /var/log/cups | 记录打印信息的日志 |
| /var/log/dmesg | 记录了系统在开机时内核自检的信息,也可以使用 dmesg 命令直接查看内核自检信息 |
| /var/log/mailog | 记录邮件信息 |
| /var/log/message | 记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日志文件 |
| /var/log/btmp | 记录错误登录日志,这个文件是二进制文件,不能直接 vi 查看,而要使用 lastb 命令查看 |
| /var/log/lastlog | 记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接 vi,而要使用 lastlog 命令查看 |
| /var/log/wtmp | 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,不能直接 vi,而需要使用 last 命令来查看 |
| /var/log/utmp | 记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登录用户的信息。同样这个文件不能直接 vi,而要使用 w, who, users 等命令来查询 |
| /var/log/secure | 记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如 SSH 登录,su 切换用户,sudo 授权,甚至添加用户和修改用户密码都会记录在这个日志文件中 |
2. 日志分析技巧
/var/log/secure
-
定位有多少 IP 在爆破主机的
root
帐号:grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
-
定位有哪些 IP 在爆破:
grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?\[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.[0-9]+"|uniq -c
-
爆破用户名字典是什么?
grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
-
登录成功的 IP 有哪些:
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
-
登录成功的日期、用户名、IP:
grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
-
增加一个用户
kali
日志:Jul 10 00:12:15 localhost useradd[2382]: new group: name=kali, GID=1001
Jul 10 00:12:15 localhost useradd[2382]: new user: name=kali, UID=1001, GID=1001, home=/home/kali, shell=/bin/bash
Jul 10 00:12:58 localhost passwd: pam_unix(passwd:chauthtok): password changed for kaligrep "useradd" /var/log/secure
-
删除用户
kali
日志:Jul 10 00:14:17 localhost userdel[2393]: delete user 'kali'
Jul 10 00:14:17 localhost userdel[2393]: removed group 'kali' owned by 'kali'
Jul 10 00:14:17 localhost userdel[2393]: removed shadow group 'kali' owned by 'kali'grep "userdel" /var/log/secure
-
su
切换用户:Jul 10 00:38:13 localhost su: pam_unix(su-l:session): session opened for user good by root(uid=0)
-
sudo
授权执行:sudo -l
Jul 10 00:43:09 localhost sudo: good : TTY=pts/4 ; PWD=/home/good ; USER=root ; COMMAND=/sbin/shutdown -r now
/var/log/yum.log
软件安装升级卸载日志:
yum install gcc
[root@bogon ~]# more /var/log/yum.log
Jul 10 00:18:23 Updated: cpp-4.8.5-28.el7_5.1.x86_64
Jul 10 00:18:24 Updated: libgcc-4.8.5-28.el7_5.1.x86_64
Jul 10 00:18:24 Updated: libgomp-4.8.5-28.el7_5.1.x86_64
Jul 10 00:18:28 Updated: gcc-4.8.5-28.el7_5.1.x86_64
Jul 10 00:18:28 Updated: libgcc-4.8.5-28.el7_5.1.i686
windows日志分析
Windows事件日志简介
- Windows系统日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。
- 系统和应用程序日志存储着故障排除信息,对于系统管理员更为有用。安全日志记录着事件审计信息,包括用户验证(登录、远程访问等)和特定用户在认证后对系统做了什么,对于调查人员而言,更有帮助。
Windows事件日志说明
- Windows主要有以下三类日志记录系统事件:应用程序日志、系统日志和安全日志。
-
系统日志,记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据丢失错误等。默认位置:
%SystemRoot%\System32\Winevt\Logs\System.evtx
-
应用程序日志,包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件,例如数据库程序可以在应用程序日志中记录文件错误,程序开发人员可以自行决定监视哪些事件。默认位置:
%SystemRoot%\System32\Winevt\Logs\Application.evtx
-
安全日志,记录系统的安全审计事件,包含各种类型的登录日志、对象访问日志、进程追踪日志、特权使用、帐号管理、策略变更、系统事件。安全日志也是调查取证中最常用到的日志。默认设置下,安全性日志是关闭的,管理员可以使用组策略来启动安全性日志,或者在注册表中设置审核策略,以便当安全性日志满后使系统停止响应。默认位置:
%SystemRoot%\System32\Winevt\Logs\Security.evtx
Windows事件ID说明
- 4624 登录成功
- 4625 登录失败
- 4634 注销成功
- 4647 用户启动的注销
- 4672 使用超级用户(如管理员)进行登录
- 4720 创建用户
Log Parser日志分析
软件说明
- Log Parser是微软公司出品的日志分析工具,它功能强大,使用简单,可以分析基于文本的日志文件、XML文件、CSV(逗号分隔符)文件,以及操作系统的事件日志、注册表、文件系统、Active Directory。它可以像使用SQL语句一样查询分析这些数据,甚至可以把分析结果以各种图表的形式展现出来。
Log Parser日志分析
-
基本查询结构
Logparser.exe --i:EVT --o:DATAGRID "SELECT * FROM c:\xx.evtx"
-
使用Log Parser分析日志
登录成功的所有事件LogParser.exe -i:EVT --o:DATAGRID "SELECT * FROM c:\Security.evtx where EventID=4624"
指定登录时间范围的事件:
LogParser.exe -i:EVT --o:DATAGRID "SELECT * FROM c:\\Security.evtx where TimeGenerated>'2018-06-19 23:32:11' and TimeGenerated<'2018-06-20 23:34:00' and EventID=4624"
提取登录成功的用户名和IP:
LogParser.exe -i:EVT --o:DATAGRID "SELECT EXTRACT_TOKEN(Message,13,' ') as EventType,TimeGenerated as LoginTime,EXTRACT_TOKEN(Strings,5,'|') as Username,EXTRACT_TOKEN(Message,38,' ') as Loginip FROM c:\\Security.evtx where EventID=4624"
登录失败的所有事件:
LogParser.exe -i:EVT --o:DATAGRID "SELECT * FROM c:\\Security.evtx where EventID=4625"
提取登录失败用户名进行聚合统计:
LogParser.exe -i:EVT "SELECT EXTRACT_TOKEN(Message,13,' ') as EventType,EXTRACT_TOKEN(Message,19,' ') as user,count(EXTRACT_TOKEN(Message,19,' ')) as Times,EXTRACT_TOKEN(Message,39,' ') as Loginip FROM c:\\Security.evtx where EventID=4625 GROUP BY Message"
系统历史开关机记录:
LogParser.exe -i:EVT --o:DATAGRID "SELECT TimeGenerated,EventID,Message FROM c:\\System.evtx where EventID=6005 or EventID=6006"
其他日志分析工具介绍
- LogParser Lizard:对于GUI环境的Log Parser Lizard,其特点是比较易于使用,甚至不需要记忆繁琐的命令,只需要做好设置,写好基本的SQL语句,就可以直观的得到结果。
下载地址:Log Parser GUI. Analyze log files with SQL
- Event Log Explorer:Event Log Explorer是一款非常好用的Windows日志分析工具。可用于查看,监视和分析跟事件记录,包括安全,系统,应用程序和其他微软Windows的记录被记载的事件,其强大的过滤功能可以快速的过滤出有价值的信息。
下载地址:Event Log Explorer - Download
权限维持破除隐藏以及后门清除
Linux权限维持破除隐藏以及后门清除
1. 隐藏文件
-
- 隐藏:Linux下,文件名称前面有"."的就是隐藏文件,使用
ls -l
看不到隐藏文件。
- 隐藏:Linux下,文件名称前面有"."的就是隐藏文件,使用
-
- 破除隐藏:
ls -al
- 破除隐藏:
-
- 提示:一般在
/tmp
下,默认存在多个隐藏目录,这些目录是恶意文件常用来藏身的地方。如/temp/.ICE-unix/
、/temp/.Test-unix/
、/temp/.X11-unix/
、/temp/.XIM-unix/
- 提示:一般在
2. 隐藏文件时间戳
-
-
隐藏:
touch -r index.php webshell.php #将index.php的时间戳赋给webshell.php
touch -t 1401021042.30 webshell.php #修改时间戳为2014 年 01 月 02日
-
-
-
破除隐藏:
stat webshell.php #查看
ls -al --time=ctime webshell.php
-
说明 :chmod
、chown
等修改文件权限、所有者,所属组的操作,会更新atime
和ctime
的值。
3. 隐藏权限
-
- 隐藏:在Linux中,使用
chattr
命令来防止root
和其他管理用户误删除和修改重要文件及目录,此权限用ls -l
是查看不出来的,从而达到隐藏权限的目的。
这个技巧常被用在后门,变成了一些难以清除的后门文件。
- 隐藏:在Linux中,使用
-
-
破除隐藏:
chattr +i evil.php #锁定文件
lsattr evil.php #属性查看
chattr -i evil.php #解除锁定
rm -rf 1.evil.php #删除文件
-
4. 隐藏历史操作命令
-
- 隐藏:
-
-
- 1.只针对你的工作关闭历史记录
[space]set +o history
备注:[space]
表示空格。并且由于空格的缘故,该命令本身也不会被记录。
上面的命令会临时禁用历史功能,这意味着在这命令之后你执行的所有操作都不会记录到历史中,然而这个命令之前的所有东西都会原样记录在历史列表中。
- 1.只针对你的工作关闭历史记录
-
-
-
- 2.从历史记录中删除指定的命令
history | grep "keyword"
,上述命令执行后,会输出历史记录中匹配的命令,每一条前面会有个数字。从历史记录中删除那个指定的项:history -d [num]
- 2.从历史记录中删除指定的命令
-
-
-
- 只保留前150行:
sed -i '150,$d' .bash_history
- 只保留前150行:
-
-
- 破除隐藏:
-
-
- 提前备份
.bash_history
文件
- 提前备份
-
-
- 重新开启历史功能,执行下面的命令:
[Space]set -o history
它将环境恢复原状,也就是你完成了你的工作,执行上述命令之后的命令都会出现在历史中。
- 重新开启历史功能,执行下面的命令:
5. 隐藏远程SSH登陆记录
-
- 隐身登录系统,不会被
w
、who
、last
等指令检测到。
ssh -T root@127.0.0.1 /bin/bash --i
- 隐身登录系统,不会被
-
- 不记录ssh公钥在本地
.ssh
目录中
ssh -o UserKnownHostsFile=/dev/null -T user@host /bin/bash --i
- 不记录ssh公钥在本地
6. 端口复用
-
-
利用
IPTables
进行端口复用端口复用链
iptables -t nat -N LETMEIN
端口复用规则
iptables -t nat -A LETMEIN -p tcp -j REDIRECT --to-port 22
开启开关
iptables -A INPUT -p tcp -m string --string 'threathuntercoming' --algo bm -m recent --set -name letmein --rsource -j ACCEPT
关闭开关
iptables -A INPUT -p tcp -m string --string 'threathunterleaving' --algo bm -m recent --name letmein --remove -j ACCEPT
let's do it
iptables -t nat -A PREROUTING -p tcp --dport 80 --syn -m recent --rcheck --seconds 3600 -name letmein --rsource -j LETMEIN
-
-
- 检测:
Netstat
查看监听端口
- 检测:
7. 进程隐藏
-
-
说明:管理员无法通过相关命令工具查找到你运行的进程,从而达到隐藏目的,实现进程隐藏。
利用办法:进程注入工具linux-inject
github
项目地址: https://github.com/gaffe23/linux-inject.git下载程序编译
git clone https://github.com/gaffe23/linux-inject.git
cd linux-inject && make测试进程
./sample-target
进程注入
./inject -n sample-target sample-library.so
-
-
-
破除隐藏:
unhide
是一个小巧的网络取证工具,能够发现那些借助rootkit
、LKM
及其它技术隐藏的进程和TCP / UDP
端口。这个工具在Linux
,UNIX
类,MS-Windows
等操作系统下都可以工作。
下载地址:Unhide homepage - Welcome安装
sudo yum install unhide
使用
unhide [options] test_list
-
使用unhide proc
发现隐藏进程evil_script.py
Windows权限维持破除隐藏以及后门清除
后门
攻击者在获取服务器权限后,通常会用一些后门来维持权限。如果想让后门保持得更久些,就需要隐藏好它,使之不易被管理员发现。
常见的后门维持方式包括:
- 利用文件属性
- 利用ADS隐藏文件内容
- 驱动级文件隐藏
- 隐藏账号
- 端口复用
- 进程注入
利用文件属性
隐藏
最简单的一种隐藏文件的方式是,右键点击文件,选择属性,勾选"隐藏"选项,然后点击确定。这样文件就被隐藏了。
破除隐藏
点击查看,勾选显示隐藏的文件,文件就会显示出来。
高级隐藏
使用Attrib +s +a +h +r命令是把原本的文件夹增加了系统文件属性、存档文件属性、只读文件属性和隐藏文件属性。
attrib +s +a +h +r D:\\test\\project\\test.txt
破除高级破除隐藏
打开电脑文件夹选项卡,取消"隐藏受保护的操作系统文件"勾选,把"隐藏文件和文件夹"下面的单选选择"显示隐藏的文件、文件夹和驱动器"。
利用ADS隐藏文件内容
隐藏
在服务器上echo一个数据流文件进去,比如index.php是网页正常文件,我们可以这样搞:
echo ^<?php @eval($_POST['chopper']);?^> > index.php:hidden.jpg
这样子就生成了一个不可见的shell hidden.jpg,常规的文件管理器、type命令,dir命令、del命令发现都找不出那个hidden.jpg。
查看
dir /r
破除隐藏
删除index.php:hidden.jpg即可。
驱动级文件隐藏
隐藏
驱动隐藏可以用一些软件来实现,软件名字叫:Easy File Locker。
破除隐藏
确认是否隐藏。如果网站目录未查找到相关文件,且系统目录存在以下文件:
- c:\WINDOWS\xlkfs.dat
- c:\WINDOWS\xlkfs.dll
- c:\WINDOWS\xlkfs.ini
- c:\WINDOWS\system32\drivers\xlkfs.sys
那么应该是遭遇了驱动级文件隐藏。
实施清除
1.查询服务状态:
sc qc xlkfs
1.停止服务:
net stop xlkfs
服务停止后,经驱动级隐藏的文件即可显现。
1.删除服务:
sc delete xlkfs
1.删除系统目录下面的文件,重启系统,确认服务已经被清理了。
隐藏账号
隐藏
可以使用CMD命令行下建立一个用户名为"test$",密码为"abc123!"的简单隐藏账户,并且把该隐藏账户提升为管理员权限。
破除隐藏
使用D盾_web查杀工具,使用克隆账号检测功能进行查看,可检测出隐藏、克隆账号。
端口复用
隐藏
可以使用WinRM服务或者其他的工具实现端口复用。
破除隐藏
复用时会在安全日志中留下痕迹。
进程注入
隐藏
进程注入是病毒木马的惯用手段,同时,它也是一种隐藏技术。
破除隐藏
- 通过TCPview显示已建立的TCP连接,我们可以看到异常的连接,同时,恶意软件将以绿色显示不到一秒钟,然后变成红色消失,如此循环。
- 利用process monitor捕捉通信过程,有规律的请求取决于sleep设置的间隔。
- 利用process monitor或者火绒剑监控进程都可以定位到注入进程。
命令
如果需要在Windows命令行窗口中执行以下命令,可以把命令放在三个反引号之间的代码块中,或者使用"```cmd"标记。比如:
echo hello
注意事项
隐藏文件的方式还有很多,比如伪装成一个系统文件夹图标,利用畸形文件名、保留文件名无法删除,甚至取一个与系统文件很像的文件名并放在正常目录里面,很难辨别出来。这些隐藏文件的方式早已不再是秘密,而更多的恶意程序开始实现"无文件"攻击,这种方式极难被发现。