1、关于webshell
概念:存在于web服务器端的脚本后门,以asp、php、jsp等网页文件形式存在的一种命令执行环境
特性:与服务端正常脚本运行原理相同。可以绕过防火墙对主机进行操作。可进行文件上传、下载、命令执行等。webshell操作权限取决于解析器运行权限
2、一句话木马
概念:通过向服务端提交一句简短代码,配合本地客户端来实现webshell功能
示例:
<%eval request("cmd")%>
# eval函数用于执行客户端命令。request()接收客户端提交的数据。cmd为客户端提交命令的参数值
特性:变形多,易隐藏、难发现
基于交换数据流(alternate data streams)的一句话木马
NTFS文件系统中文件可以存在多个数据流,其他文件流可以寄宿在主文件流中(流寄托于宿主)。使用资源派生来维持与文件相关的信息,无法通过资源管理器(explorer)及命令行(cmd)查看。流文件与宿主文件的修改不相互影响,删除宿主文件即可删除流文件。
创建流文件方法:
宿主文件:与宿主文件关联的数据流文件。如:echo “test” >test.txt:ads.txt
查看ADS木马:工具LADS
lads.exe 目标目录 /S
notepad test.txt:ads.txt #如此也可以打开数据流文件ads.txt
清除ADS木马:工具Streams
streams.exe –s –d 目标目录
清除宿主文件test.txt后,数据流文件也会随之清除 #宿主文件可清除的情况下
3、webshell检测
1、基于webshell属性
根据文件创建日期进行搜索。指定时间段内文件修改时间。通过文件指纹,定期进行对比。对比文件目录结构
2、基于webshell日志
部分webshell通过get方式提交相关参数:Rename、Delete、Rename、Edit、EXecute
统计指定文件类型访问量并排序:访问量异常的文件即可能为后门
开启日志POST记录,记录指定大小的数据包:eval、base64_decode
3、基于webshell特征(Linux)
关键字查找:
grep –RPn “(passthru|shell_exec|system|phpinfo|base64_decode|chmod|mk dir|fopen|fclose|readfile|php_uname|eval|tcpflood|udpflood|edoced_46esab) *\(” /var/www
find /www -name“*.php”|xargs grep“shell_exec”|more
自动化脚本查找:findWebshell、Scan_webshell.py
文件内容搜索工具:grepWin(支持正则表达式)
自动化工具查找:WebShellKill、WebScan、HwsKill
1、windows系统日志
依赖的服务:Eventlog(如果该服务被禁用就不会产生任何日志)
查看日志:通过事件查看器(eventvwr)管理。支持查看、筛选、另存、清除。文件类型为Evt。该文件格式不支持编辑,所以无法对日志内容进行修改
默认路径:%SystemRoot%\system32\config\
。达到大小上限时将进行覆盖
日志类型:应用程序(AppEvent.Evt)、安全性(SecEvent.Evt)、系统(SysEvent.Evt)
1、应用程序日志
来源:系统组件和第三方应用程序(安全软件)
类型:信息、警告、错误
2、系统日志
来源:系统组件
类型:信息、警告、错误日志。大部分事件均有固定的事件ID
3、安全性日志
来源:Security
应急响应过程中重要参考对象:用户名、登录类型、源网络地址
默认只有登陆成功的审核日志
审计日志内容可配置:成功与失败。策略更改、登陆、目录访问、账户管理等事件均可记录。可以将日志配置为能记录多方面信息。更改后使用组策略刷新:gpupdate /force
2、日志中的登录类型
登录类型号 | 登录类型对应的名称 | 登录类型细节 |
---|---|---|
登录类型2 | 交互式登录(Interactive) | 在控制台上通过本地键盘进行的登录(KVM) |
登录类型3 | 网络(Network) | 连接到共享文件夹或打印机的用户认证(IIS) |
登录类型4 | 批处理(Batch) | 任务计划启动时其中配置的运行账户创建的会话 |
登录类型5 | 服务(Service) | 服务启动时其中配置的运行账户创建的登陆会话 |
登录类型7 | 解锁(Unlock) | 计算机锁定后输入口令的解锁过程 |
登录类型8 | 网络明文(NetworkCleartext) | 通过明文传输口令的网络登录(HTTP Basic登录IIS—Advapi) |
登录类型9 | 新凭证(NewCredentials) | 使用RUNAS/Netonly运行程序时,连接网络上其它计算机登陆 |
登录类型10 | 远程交互(RemoteInteractive) | 通过终端服务、远程桌面或远程协助登陆计算机时 |
登录类型11 | 缓存交互(CachedInteractive) | 当域控制器不可用时,域用户登录时将使用缓存的凭证HASH来验证(最近10次) |
3、常见的残留痕迹(基于Windows10操作系统)
痕迹 | 默认位置 |
---|---|
用户目录(rd /s /q) | X:\Users |
桌面目录(习惯性操作) | X:\Users\用户\Desktop |
IE临时文件(访问网页缓存) | X:\Users\用户\AppData\Local\Microsoft\Windows\INetCache |
历史文件访问记录 | X:\Users\用户\AppData\Local\Microsoft\Windows\History |
临时文件(自解压释放) | X:\Users\用户\AppData\Local\Temp |
4、账户相关记录
1、当前账户信息(隐藏、克隆账户)
注册表:HKLM\SAM\SAM\Domains\Account\Users
2.登陆用户记录(已删除账户)
注册表:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
3.相关记录扫描工具:
index.dat
比如由浏览器(IE&Explorer)创建的数据库文件。包含最近的URL访问、搜索字符串、文件打开等记录。非文本文件,可用Index.dat Analyzer等工具读取。
5、其他记录
1、回收站目录
--根目录下的RECYCLER目录,以SID命名用户目录
--INFO2文件保存被删文件的文件名、时间、日期及原文件映射关系
2、运行历史记录
--Win+R命令执行记录
3、默认下载路径
--Windows NT 6.0(Vista)及以后:C:\Users\Account\Downloads
4、其他应用软件记录
--Office、Firefox、WinRAR
6、Linux系统日志
依赖的服务:rsyslog(旧版本syslog)。如果停止就不会产生任何日志
--/etc/init.d/rsyslog status
默认配置文件:
/etc/syslog.conf
/etc/rsyslog.conf(centos6以后)
配置文件默认路径:
/var/log(/var/tmp)
文件类型为文本:
查看文本命令:cat、more、tail
在root权限下删除IP为这个的记录:sed -i ‘/172.0.1.2/d’ access_log*
将按一定规则自动拆分:
cron-20140926、btmp.1、dpkg.log.2.gz
默认只有root用户对日志文件有修改权限
7、默认启用的一些日志
1、/var/log/secure:安全认证相关信息(ssh,ftp)
2、/var/log/cron:定时任务相关信息(脚本执行监控)
3、/var/log/message:系统应用信息和错误(服务启动排错)
4、/var/log/boot.log:开关机过程进程信息(磁盘挂载)
5、/var/log/maillog:邮件相关信息(存取与往来)
6、/var/log/spooler:uucp和news设备相关信息
8、用户登录相关
相关命令 | 功能 | 具体实现 |
---|---|---|
wtmp | 用户登陆及系统启停(last) | who -u /var/log/wtmp |
lastlog | 最近成功登陆时间(lastlog) | lastlog -f /var/log/lastlog |
btmp | 登陆认证失败记录(lastb) | last -f /var/log/btmp |
utmp | 当前在线用户(w、who、users) | who -u /var/run/utmp |
9、其他记录
1、命令执行历史记录
--.bash_history
--默认为1000条(HISTSIZE)
--export HISTFILE=/dev/null export HISTSIZE=0
2、使用vim操作记录:
.viminfo
3、SSH连接记录:
.ssh/known_hosts
4、账户相关记录
--stat /etc/passwd /etc/shadow #查看这两个文件的Modify时间
--ls -la /home/test(test是用户) #查看主目录。它不随账户一起删除
--userdel –r test #彻底删除账户。连同主目录一起删除
1、web中间件日志-IIS
默认路径:%systemroot%\system32\LogFiles(可以自定义)
日志文件名:exYYMMDD.log(ex年月日)
默认时区:GMT+0(实际时间需+8)
默认格式:c-xxx(客户端相关字段)。s-xxx(服务端相关字段)
2、web中间件日志-Apache
默认配置文件:httpd.conf(这个是主要的)
默认文件名:access_log
常见路径:/var/log/httpd(这个是不一定的)
默认格式:(日志详细程度不一样)
--CustomLog logs/access_log combined
--LogFormat "%h %l %u %t \"%r\" %>s %b" common
注释:%h客户端IP、%l远端登录名、%u远程用户名、%t访问时间、%r请求的第一行、%>s最后请求状态、%b传送字节数
3、web中间件日志-Tomcat
默认未开启访问日志:
${catalina}/conf/server.xml
配置示例:
默认为标准日志输出格式
注释:%h访问IP 、%l逻辑用户名 、%u验证用名 、%t访问时间 、%r请求内容 、%>s返回HTTP状态、 %bHTTP响应头大小
4、web中间件日志-Jboss
默认未开启用户访问日志:
${JBOSS_HOME}/server/defaul/deploy/jboss-web.deployer/server.xml
配置示例:
日志格式:%h %l %u %t %r %s %b
1、日志分析工具
LogView:快速打开大体积文件,不占用内存。可以通过正则匹配建立筛选日志。
EmEditor:全球最快的编辑器—快速、轻巧、可扩展。支持插件安装—正则表达式和宏功能。支持分隔、选择列、文件夹查找。
2、日志中的攻击特征
SQL注入:select、where、order、union、substring
XSS漏洞:iframe、src、img、onerror
目录穿越:../../、%c0%ae、..%5c..%5c
Struts2漏洞:memberAccess、getRuntime、println、java.lang
暴力破解:302、401、404、同一来源IP
3、常规溯源
木马样本分析:静态逆向分析—IDA、OllyDbg。动态分析—抓包、DNS嗅探、内存截取
日志分析:web访问—webshell首次访问IP。登录记录—windows&linux认证记录
确认是否为跳板:nmap -sV -PN -sT -T4 -p- 10.1.2.3。如果是跳板,可以通过反入侵追踪等手段溯源。如果遇到困难,建议通过相关司法程序解决。
4、邮件溯源
邮件路由信息从下往上(Received)进行传送
网页版可能不带原始客户端IP(X-Originating-IP)
邮件头会包含邮件客户端信息(X-Mailer)
5、其他溯源方式
社工个人信息、通过付费黑产渠道深入挖掘个人信息、IP地址定位(www.hao7188.com)、利用百度谷歌等溯源。
1、分析过程
基本信息(文件信息、类型、漏洞、文件保护)
分析环境(虚拟机、沙箱、使用软件)
分析平台(TAC、翠鸟、火眼、hybrid、哈勃、文件B超)
分析工具(编辑工具、监视工具、调试器、脱壳工具、)
分析重点(Where、What、How、Do、Do-detect)
恶意软件
2、分析工具
分类 | 举例 |
---|---|
编辑工具 | 010 editor,WinHex,UltraEdit,Hex Workshop |
调试器 | Windbg,gdb,ollydbg,Immunity Debugger,Ida,c32asm,vb decompiler,dededark,dnspy,ILspy,易逆工程师 |
脱壳工具 | upx,ASPack,PECompact |
监视工具 | Wireshark,windump,tcpdump,procmon, Pchunter,PowerTools,filemon,regmon, procexp(SysinternalsSuite) |
API调用监控 | API Monitor |