-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrss.xml
More file actions
4163 lines (4073 loc) · 264 KB
/
rss.xml
File metadata and controls
4163 lines (4073 loc) · 264 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Pico Org</title><description>Pico组织博客</description><link>https://picoorg.github.io/</link><language>zh_CN</language><item><title>AI安全之路--开篇</title><link>https://picoorg.github.io/posts/ai%E5%AE%89%E5%85%A8/</link><guid isPermaLink="true">https://picoorg.github.io/posts/ai%E5%AE%89%E5%85%A8/</guid><description>梳理各类AI产品思路。</description><pubDate>Wed, 19 Feb 2025 00:00:00 GMT</pubDate><content:encoded><ul>
<li><a href="#1-%E5%BC%80%E7%AF%87">1. 开篇</a>
<ul>
<li><a href="#11-ai%E7%BB%99%E5%AE%89%E5%85%A8%E5%B8%A6%E6%9D%A5%E4%BA%86%E4%BB%80%E4%B9%88">1.1. AI给安全带来了什么</a></li>
<li><a href="#12-ai%E5%AE%89%E5%85%A8%E4%BA%A7%E5%93%81%E5%BD%A2%E5%BC%8F%E9%A2%84%E6%B5%8B">1.2. AI安全产品形式预测</a></li>
</ul>
</li>
<li><a href="#2-ai%E5%AE%89%E5%85%A8%E4%BA%A7%E5%93%81">2. AI安全产品</a>
<ul>
<li><a href="#21-%E5%AE%89%E5%85%A8%E7%9A%84ai">2.1. 安全的AI</a>
<ul>
<li><a href="#211-%E6%A8%A1%E5%9E%8B%E8%AE%AD%E7%BB%83">2.1.1. 模型训练</a></li>
<li><a href="#212-%E6%A8%A1%E5%9E%8B%E4%BC%98%E5%8C%96">2.1.2. 模型优化</a>
<ul>
<li><a href="#2121-llama-factory">2.1.2.1. LLaMA-Factory</a></li>
</ul>
</li>
<li><a href="#213-%E5%BA%94%E7%94%A8%E6%A1%86%E6%9E%B6">2.1.3. 应用框架</a></li>
<li><a href="#214-%E5%85%B7%E4%BD%93%E5%BA%94%E7%94%A8">2.1.4. 具体应用</a></li>
</ul>
</li>
<li><a href="#22-%E5%AE%89%E5%85%A8%E6%8F%90%E6%95%88">2.2. 安全提效</a>
<ul>
<li><a href="#221-deepseekselftool">2.2.1. DeepSeekSelfTool</a></li>
</ul>
</li>
<li><a href="#23-%E5%AE%89%E5%85%A8%E6%8E%A2%E7%B4%A2">2.3. 安全探索</a>
<ul>
<li><a href="#autoaudit">AutoAudit</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#3-%E5%B1%95%E6%9C%9B">3. 展望</a></li>
<li><a href="#4-%E5%8F%82%E8%80%83%E6%96%87%E7%8C%AE">4. 参考文献</a>
<ul>
<li><a href="#401-%E4%BB%A3%E7%A0%81%E5%AE%A1%E8%AE%A1%E4%B8%8E%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90s">4.0.1. 代码审计与漏洞分析s</a></li>
<li><a href="#402-%E7%BD%91%E7%BB%9C%E4%BE%A6%E5%AF%9F%E4%B8%8E%E5%A8%81%E8%83%81%E6%83%85%E6%8A%A5">4.0.2. 网络侦察与威胁情报</a></li>
<li><a href="#403-%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95%E4%B8%8E%E6%BC%8F%E6%B4%9E%E5%88%A9%E7%94%A8">4.0.3. 渗透测试与漏洞利用</a></li>
<li><a href="#404-%E5%AE%89%E5%85%A8%E6%A3%80%E6%B5%8B%E4%B8%8E%E9%98%B2%E5%BE%A1">4.0.4. 安全检测与防御</a></li>
<li><a href="#405-%E9%80%86%E5%90%91%E5%B7%A5%E7%A8%8B%E4%B8%8E%E8%87%AA%E5%8A%A8%E5%8C%96">4.0.5. 逆向工程与自动化</a></li>
<li><a href="#406-%E5%8E%82%E5%95%86ai">4.0.6. 厂商AI</a></li>
<li><a href="#407-7llm%E5%BA%94%E7%94%A8%E4%BE%A7">4.0.7. 7.LLM应用侧</a></li>
</ul>
</li>
</ul>
<h1>1. 开篇</h1>
<p>如果说当下及未来十年或是几十年最具想象力的技术方向,那<code>AI</code>一定占有一席之地。本文讨论的内容站在安全视角探索产品发展路线,同样的思路可以扩展到各个领域。</p>
<h2>1.1. AI给安全带来了什么</h2>
<p>“安全的AI和AI促进安全”是老生常谈的一个观点,包括偶然机会和某位大咖(头部安全实验室负责人)聊天也提到。观点没有错,但是过于浮在空中落不了地,同样的模板我想也能套用到未来的新领域。</p>
<p>具体来讲可预见的有以下内容:</p>
<ol>
<li>安全的AI:模型训练场景,模型优化场景,应用框架场景,具体应用场景四类场景下的各种风险管理。</li>
</ol>
<p><img src="ai%E6%9E%B6%E6%9E%84.jpg" alt="alt text" /></p>
<ol>
<li>安全提效:IT相关的三大场景安全能力去人力化,包含基础设施场景,数据场景,以及在前两者之上抽象出的各类业务场景。</li>
<li>安全探索:填补因脑力局限而错失的各类安全交叉领域的空白。</li>
</ol>
<h2>1.2. AI安全产品形式预测</h2>
<p>我认为AI并不能做出超越预料范围的创新,就像人类无法创造出从未见过的事物。因此,不能过分期望用<code>AI</code>解决创新问题,而是如何创新地用好<code>AI</code>。</p>
<p><code>AI</code>的优劣势分析:</p>
<table>
<thead>
<tr>
<th>优势</th>
<th>劣势</th>
<th>分析</th>
</tr>
</thead>
<tbody>
<tr>
<td>没有上限的学习能力</td>
<td>成为全领域专家成本指数增长</td>
<td>适合成为某一领域专家</td>
</tr>
<tr>
<td>优秀的推理能力</td>
<td>准确性依赖于人类输入</td>
<td>适合做分析类工作,但需要人类指导</td>
</tr>
</tbody>
</table>
<p>归纳起来可能有两类产品方向:</p>
<ol>
<li>提效类:将人类活动抽象成复杂的调度问题,用<code>AI</code>替换掉某些简单决策即可完成的事项。</li>
<li>探索类:通过不断的输入标注数据,实现“一超多能”的单领域<code>T</code>型专家。</li>
</ol>
<h1>2. AI安全产品</h1>
<table>
<thead>
<tr>
<th>产品</th>
<th>方向</th>
<th>本质</th>
<th>定位</th>
<th>优势</th>
<th>级别</th>
</tr>
</thead>
<tbody>
<tr>
<td>LLaMA-Factory</td>
<td>模型优化</td>
<td>sft算法整合</td>
<td>模型微调工具</td>
<td>整合及易用</td>
<td>100k-1m</td>
</tr>
<tr>
<td>DeepSeekSelfTool</td>
<td>安全提效</td>
<td>prompt</td>
<td>蓝队Agent</td>
<td>易用UI</td>
<td>100-1k</td>
</tr>
<tr>
<td>AutoAudit</td>
<td>安全探索</td>
<td>prompt+sft</td>
<td>代码分析</td>
<td>模型迭代</td>
<td>100-1k</td>
</tr>
</tbody>
</table>
<h2>2.1. 安全的AI</h2>
<h3>2.1.1. 模型训练</h3>
<h3>2.1.2. 模型优化</h3>
<h4>2.1.2.1. LLaMA-Factory</h4>
<p><a href="https://github.com/hiyouga/LLaMA-Factory">LLaMA-Factory</a>是一个整合了多种微调技术的产品,包括LoRA等,涵盖了多种模型的适配,包括DeepSeek等。很明显其优势在于降低了非算法同学微调模型的门槛。</p>
<h3>2.1.3. 应用框架</h3>
<h3>2.1.4. 具体应用</h3>
<h2>2.2. 安全提效</h2>
<h3>2.2.1. DeepSeekSelfTool</h3>
<p><a href="https://github.com/ChinaRan0/DeepSeekSelfTool/">DeepSeekSelfTool</a>虽然有一定的标注输入数据,但仍是一个比较标准的基于<code>prompt</code>的安全工具,用于分析各类流量、进程、文件等信息的安全风险。在<a href="https://mp.weixin.qq.com/s/QpGlIrf4fA0JOefBorD2wg">基于deepseek的安全分析工具设计实践</a>一文中有比较详细的使用方法介绍,属于蓝队专家角色的<code>Agent</code>,产品优势在于考虑到用户普适性。</p>
<h2>2.3. 安全探索</h2>
<h3>AutoAudit</h3>
<p><a href="https://github.com/ddzipp/AutoAudit">AutoAudit</a>是具有探索性质雏形的工具,其优势在于通过数据集标注微调模型,进而实现安全漏洞分析覆盖,缺点也比较明显使用的微调框架比较受限。</p>
<h1>3. 展望</h1>
<h1>4. 参考文献</h1>
<ul>
<li><a href="https://github.com/Acmesec/theAIMythbook">Ai迷思录(应用与安全指南)</a></li>
</ul>
<h3>4.0.1. 代码审计与漏洞分析s</h3>
<table>
<thead>
<tr>
<th>工具名称</th>
<th>产品原理</th>
<th>应用场景</th>
<th>存疑思考</th>
</tr>
</thead>
<tbody>
<tr>
<td>AutoAudit</td>
<td>基于LLM,分析代码、配置文件等,识别安全漏洞或不合规行为。</td>
<td>代码审计、配置审查、合规性检查、漏洞早期发现。</td>
<td>准确性依赖模型,可能有误报漏报。对复杂或新型漏洞识别能力有限。</td>
</tr>
<tr>
<td>SourceGPT</td>
<td>利用ChatGPT作为预言机,结合提示工程和代码分析技术。</td>
<td>辅助代码审查、安全漏洞识别、代码理解、生成安全文档。</td>
<td>依赖ChatGPT理解能力。提示工程质量影响结果。可能有幻觉问题。</td>
</tr>
<tr>
<td>vulnhuntr</td>
<td>使用LLM进行零样本漏洞发现,利用LLM的泛化能力。</td>
<td>未知漏洞发现、安全研究、自动化漏洞挖掘。</td>
<td>零样本学习效果可能不稳定。可能产生大量误报。缺乏可信度。</td>
</tr>
<tr>
<td>ChatGPTScanner</td>
<td>基于ChatGPT的代码扫描器,将代码片段输入ChatGPT进行分析。</td>
<td>快速代码审查、漏洞初步筛查、安全教育。</td>
<td>依赖ChatGPT漏洞识别能力。无法处理大型代码库。Prompt影响大。</td>
</tr>
<tr>
<td>chatgpt-code-analyzer</td>
<td>类似ChatGPTScanner,集成到VS Code中。</td>
<td>开发过程中实时代码分析、漏洞提示。</td>
<td>同ChatGPTScanner。可能影响开发效率。IDE集成有安全风险。</td>
</tr>
<tr>
<td>黑客 AI</td>
<td>在线工具,通过AI模型分析上传的代码,检测漏洞。</td>
<td>快速漏洞检测、无需安装。</td>
<td>数据隐私安全风险。透明度低。可能需付费。</td>
</tr>
<tr>
<td>audit_gpt</td>
<td>针对智能合约进行微调的GPT模型。</td>
<td>智能合约审计、漏洞检测、安全加固。</td>
<td>效果依赖微调数据。难适应语言快速发展。对新型漏洞识别有限。</td>
</tr>
<tr>
<td>vulchatgpt</td>
<td>结合IDA Pro的HexRays反编译器和ChatGPT。</td>
<td>二进制文件漏洞分析、逆向工程辅助、恶意软件分析。</td>
<td>依赖反编译准确性和ChatGPT分析。难处理复杂二进制或混淆代码。需IDA Pro和ChatGPT授权。</td>
</tr>
<tr>
<td>Ret2GPT</td>
<td>利用LangChain和OpenAI API,构建知识图谱或语义分析模型。</td>
<td>CTF比赛、二进制漏洞分析、安全研究。</td>
<td>依赖LangChain和OpenAI API。可能需高计算资源。对复杂漏洞识别有限。</td>
</tr>
<tr>
<td>AuthzAI</td>
<td>利用OpenAI结构化输出能力,对比API端点预期权限模型与实际行为。</td>
<td>API安全测试、权限验证、访问控制审计。</td>
<td>依赖OpenAI结构化输出和权限模型理解。难处理复杂权限逻辑。</td>
</tr>
<tr>
<td>SinkFinder</td>
<td>结合LLM和静态代码分析,评估数据流安全性。</td>
<td>静态代码分析、漏洞挖掘、数据流分析。</td>
<td>依赖LLM对代码上下文理解和安全漏洞识别。可能有误报漏报。</td>
</tr>
<tr>
<td>Callisto</td>
<td>结合Ghidra、Semgrep和GPT进行自动化二进制漏洞分析。</td>
<td>二进制文件分析、漏洞挖掘。</td>
<td>准确性依赖多组件。复杂漏洞需人工复核。</td>
</tr>
<tr>
<td>CodeScanGPT</td>
<td>实验性的工具,通过GPT和OpenAPI实现对目标代码的安全漏洞扫描</td>
<td>快速的进行代码的安全扫描实验</td>
<td>效果受限于GPT的能力。</td>
</tr>
<tr>
<td>LLM-CodeSecurityReviewer</td>
<td>一个可以辅助检查代码安全性的工具</td>
<td>快速的分析并评估代码的安全风险</td>
<td>需要自行搭建环境</td>
</tr>
</tbody>
</table>
<h3>4.0.2. 网络侦察与威胁情报</h3>
<table>
<thead>
<tr>
<th>工具名称</th>
<th>产品原理</th>
<th>应用场景</th>
<th>存疑思考</th>
</tr>
</thead>
<tbody>
<tr>
<td>CensysGPT 测试版</td>
<td>利用Censys数据和GPT模型,通过自然语言查询获取信息并分析。</td>
<td>威胁情报、资产发现、风险评估。</td>
<td>依赖Censys数据和GPT分析。受限于Censys覆盖。对新型威胁识别有限。</td>
</tr>
<tr>
<td>GPT_Vuln分析器</td>
<td>结合Nmap、DNS Recon和GPT模型,分析信息生成漏洞报告。</td>
<td>漏洞扫描、网络安全评估、自动化报告。</td>
<td>依赖各组件准确性。可能有误报漏报。</td>
</tr>
<tr>
<td>SubGPT</td>
<td>利用BingGPT分析已知子域名,发现更多子域名。</td>
<td>子域名枚举、资产发现、攻击面管理。</td>
<td>依赖BingGPT。受限Bing索引。对不常见子域名发现有限。</td>
</tr>
<tr>
<td>Navi</td>
<td>基于问答的侦察工具,通过与用户交互分析信息。</td>
<td>交互式侦察、信息收集、威胁评估。</td>
<td>依赖用户安全知识和GPT分析。有误导风险。</td>
</tr>
<tr>
<td>ChatCVE</td>
<td>利用LLM处理CVE信息,进行分类、聚合等。</td>
<td>CVE信息管理、漏洞优先级排序、安全研究。</td>
<td>依赖LLM对CVE描述理解。对新CVE或非标准描述处理不佳。</td>
</tr>
<tr>
<td>ZoomEyeGPT</td>
<td>基于GPT的ZoomEye浏览器扩展,增强搜索体验和AI辅助分析。</td>
<td>网络空间搜索引擎增强、资产发现、威胁情报。</td>
<td>依赖ZoomEye数据和GPT分析。受限ZoomEye覆盖。</td>
</tr>
<tr>
<td>uncover-turbo</td>
<td>将自然语言查询转换为测绘语法(如Shodan、Censys)。</td>
<td>网络空间测绘、资产发现、漏洞扫描。</td>
<td>依赖LLM理解查询和测绘语法。可能有转换错误。</td>
</tr>
<tr>
<td>nmap-GPT</td>
<td>结合nmap与GPT,进行安全检查</td>
<td>增强的扫描体验</td>
<td>依赖GPT进行扫描后处理</td>
</tr>
</tbody>
</table>
<h3>4.0.3. 渗透测试与漏洞利用</h3>
<table>
<thead>
<tr>
<th>工具名称</th>
<th>产品原理</th>
<th>应用场景</th>
<th>存疑思考</th>
</tr>
</thead>
<tbody>
<tr>
<td>PentestGPT</td>
<td>利用GPT模型生成攻击脚本、分析漏洞报告、提供建议。</td>
<td>自动化渗透测试、漏洞利用、安全评估。</td>
<td>依赖GPT安全知识和能力。可能有误报漏报。脚本有风险。</td>
</tr>
<tr>
<td>burpgpt</td>
<td>将GPT集成到Burp Suite,分析HTTP请求和响应。</td>
<td>Web应用安全测试、漏洞发现、动态分析。</td>
<td>依赖GPT漏洞识别和Burp配置。可能有误报漏报。</td>
</tr>
<tr>
<td>ReconAIzer</td>
<td>类似burpgpt,集成GPT到Burp Suite,辅助漏洞赏金侦查。</td>
<td>漏洞赏金、Web应用安全测试、漏洞发现。</td>
<td>同burpgpt。</td>
</tr>
<tr>
<td>CodaMOSA</td>
<td>将OpenAI API集成到模糊测试器,生成更有效测试用例。</td>
<td>模糊测试、漏洞挖掘、软件安全测试。</td>
<td>依赖OpenAI API。需高计算资源。</td>
</tr>
<tr>
<td>PassGAN</td>
<td>基于深度学习的密码猜测工具,生成更符合真实密码分布的字典。</td>
<td>密码破解、密码强度评估、安全研究。</td>
<td>依赖训练数据。可能生成弱密码。可能被滥用。</td>
</tr>
<tr>
<td>nuclei-ai-extension</td>
<td>利用AI生成Nuclei模板,自动生成YAML配置。</td>
<td>自动化漏洞扫描、快速生成扫描规则。</td>
<td>依赖AI模板生成能力。模板可能不准确。需准确漏洞信息。</td>
</tr>
<tr>
<td>nuclei_gpt</td>
<td>类似nuclei-ai-extension,通过提交请求、响应和描述生成Nuclei PoC。</td>
<td>自动化漏洞扫描、快速生成PoC。</td>
<td>依赖GPT PoC生成能力。PoC可能不准确。</td>
</tr>
<tr>
<td>Nuclei Templates AI 生成器</td>
<td>通过文本描述生成Nuclei模板。</td>
<td>自动化漏洞扫描、快速生成扫描规则。</td>
<td>依赖LLM理解描述和Nuclei语法。模板可能不准确。</td>
</tr>
<tr>
<td>hackGPT</td>
<td>利用OpenAI和ChatGPT进行黑客活动。</td>
<td>安全研究、渗透测试、漏洞利用(慎用)。</td>
<td>道德法律风险。可能被滥用。依赖OpenAI/ChatGPT能力。</td>
</tr>
<tr>
<td>AutorizePro</td>
<td>Burp Suite的授权强制检测扩展,结合AI分析。</td>
<td>Web应用安全测试、权限验证、访问控制。</td>
<td>依赖AI权限分析。可能有误报漏报。</td>
</tr>
<tr>
<td>AISploit</td>
<td>辅助测试人员的AI测试工具</td>
<td>可以利用大模型更快地进行测试,更有效地规划渗透路径</td>
<td>很依赖LLM的能力和微调数据集</td>
</tr>
</tbody>
</table>
<h3>4.0.4. 安全检测与防御</h3>
<table>
<thead>
<tr>
<th>工具名称</th>
<th>产品原理</th>
<th>应用场景</th>
<th>存疑思考</th>
</tr>
</thead>
<tbody>
<tr>
<td>k8sgpt</td>
<td>利用LLM分析Kubernetes集群问题,分析日志、配置等。</td>
<td>Kubernetes集群故障排除、配置审查、安全加固。</td>
<td>依赖LLM对K8s知识掌握。可能有误报漏报。</td>
</tr>
<tr>
<td>cloudgpt</td>
<td>利用ChatGPT扫描AWS客户托管策略漏洞。</td>
<td>AWS安全审计、策略审查、合规性检查。</td>
<td>依赖ChatGPT对AWS策略理解。可能有误报漏报。</td>
</tr>
<tr>
<td>IATelligence</td>
<td>提取PE文件的IAT并请求GPT分析,识别恶意行为或ATT&amp;CK技术。</td>
<td>恶意软件分析、威胁情报、逆向工程。</td>
<td>依赖GPT对API调用理解。可能有误报漏报。</td>
</tr>
<tr>
<td>rebuff</td>
<td>检测提示注入攻击,分析输入识别恶意提示。</td>
<td>LLM安全防护、提示注入防御、内容过滤。</td>
<td>依赖检测算法。可能有误报漏报。</td>
</tr>
<tr>
<td>LLMFuzzer</td>
<td>针对LLM的模糊测试框架,生成各种输入测试LLM。</td>
<td>LLM安全测试、漏洞发现、鲁棒性评估。</td>
<td>依赖模糊测试算法。需大量计算资源。</td>
</tr>
<tr>
<td>Vigil</td>
<td>提示注入检测和LLM提示安全扫描。</td>
<td>LLM安全防护、提示注入防御、内容过滤。</td>
<td>依赖检测算法。可能有误报漏报。</td>
</tr>
<tr>
<td>Garak</td>
<td>开源的LLM漏洞扫描器,评估并分析LLM及相关应用程序的安全漏洞。</td>
<td>LLM漏洞分析</td>
<td>该项目的效果受限于所使用的LLM模型的类型和能力。可能不适用最新模型或安全技术。需要大量计算资源来处理大型模型和复杂漏洞扫描。</td>
</tr>
<tr>
<td>LLM-SOC</td>
<td>一个RAG框架的LLM工具,集成多种安全工具</td>
<td>增强SOC的效率和分析</td>
<td>目前仍在开发</td>
</tr>
</tbody>
</table>
<h3>4.0.5. 逆向工程与自动化</h3>
<table>
<thead>
<tr>
<th>工具名称</th>
<th>产品原理</th>
<th>应用场景</th>
<th>存疑思考</th>
</tr>
</thead>
<tbody>
<tr>
<td>LLM4Decompile</td>
<td>利用LLM将机器代码生成高级语言形式。</td>
<td>二进制代码反编译、恶意软件分析、漏洞挖掘。</td>
<td>准确性和可读性受LLM限制。对复杂代码效果可能不佳。</td>
</tr>
<tr>
<td>Gepetto</td>
<td>IDA Pro插件,使用GPT模型对代码进行注释。</td>
<td>辅助逆向工程。</td>
<td>注释准确性依赖GPT理解。</td>
</tr>
<tr>
<td>gpt-wpre</td>
<td>使用GPT-3进行全程序逆向工程。</td>
<td>辅助逆向工程。</td>
<td>效果依赖GPT-3能力。</td>
</tr>
<tr>
<td>G-3PO</td>
<td>请求GPT-3对反编译代码进行注释。</td>
<td>辅助理解代码。</td>
<td>分析依赖GPT能力。</td>
</tr>
<tr>
<td>DevOpsGPT</td>
<td>利用AI自动化软件开发流程,包括代码生成、测试等。</td>
<td>自动化软件开发、提高效率、减少人为错误。</td>
<td>依赖AI模型。可能有代码质量问题。需代码审查</td>
</tr>
</tbody>
</table>
<h3>4.0.6. 厂商AI</h3>
<table>
<thead>
<tr>
<th>产品名称</th>
<th>厂商</th>
<th>产品原理</th>
<th>应用场景</th>
<th>存疑思考</th>
</tr>
</thead>
<tbody>
<tr>
<td>Q-GPT安全机器人系统(QAX-GPT)</td>
<td>奇安信</td>
<td>基于大语言模型,模拟人类专家,实现告警研判、自动化调查、任务生成。</td>
<td>大规模安全运营、自动化威胁响应。</td>
<td>依赖大模型理解推理能力。效果受模型和数据影响。可能需定制化开发。</td>
</tr>
<tr>
<td>Microsoft 安全 Copilot</td>
<td>微软</td>
<td>AI网络安全产品,使安全人员快速响应威胁、处理信号、评估风险。</td>
<td>威胁响应、风险评估、安全分析。</td>
<td>依赖微软生态。可能存在数据隐私问题。效果依赖模型。</td>
</tr>
<tr>
<td>Vulnerability detection by AI</td>
<td>Offective 360</td>
<td>AI解决方案,扫描源代码识别潜在漏洞。</td>
<td>源代码安全审计、漏洞预防。</td>
<td>效果依赖AI模型。可能存在误报漏报。</td>
</tr>
<tr>
<td>Firewall for AI</td>
<td>Cloudflare</td>
<td>AI防火墙,识别滥用和攻击。</td>
<td>LLM应用安全防护。</td>
<td>效果依赖识别算法。可能存在误报漏报。</td>
</tr>
<tr>
<td>AI-SPM</td>
<td>Wiz</td>
<td>AI安全态势管理产品,保护AI工具使用。</td>
<td>AI开发安全、安全态势管理。</td>
<td>针对AI开发场景,可能需与其他安全工具集成。</td>
</tr>
<tr>
<td>Burp GPT</td>
<td>安吉斯网络</td>
<td>Burp Suite扩展,集成GPT提高应用安全测试精度和效率。</td>
<td>Web应用安全测试、漏洞发现。</td>
<td>依赖GPT漏洞识别能力。可能存在误报漏报。</td>
</tr>
<tr>
<td>NgSecGPT</td>
<td>华云信安</td>
<td>基于LLaMA系开源大模型,利用大规模网络安全数据集微调。</td>
<td>网络安全任务</td>
<td>开源性待验证。效果依赖模型和数据。</td>
</tr>
<tr>
<td>360 安全大模型(目前没开源)</td>
<td>360</td>
<td>基于安全大数据和攻防实战经验研发的安全“中枢框架”,包含多个安全大模型。</td>
<td>攻击检测、运营处置、知识管理、追踪溯源、代码安全、数据保护等。</td>
<td>开源性待验证。效果依赖模型和数据。可能存在厂商锁定。</td>
</tr>
<tr>
<td>StarShip SecScan</td>
<td>OpenCSG</td>
<td>基于大模型的软件安全防护方案,分析代码识别威胁和漏洞。</td>
<td>源代码安全漏洞审查、第三方依赖包安全审查、IDE侧安全漏洞扫描。</td>
<td>效果依赖AI模型。可能存在误报漏报。</td>
</tr>
<tr>
<td>Fortinet Advisor</td>
<td>Fortinet</td>
<td>生成式AI安全助手,加速威胁调查和修复,提高安全团队技能。</td>
<td>威胁调查、修复、安全分析、报告生成。</td>
<td>依赖Fortinet生态。效果依赖AI模型。</td>
</tr>
<tr>
<td>GenAI-Powered Security Tools</td>
<td>Fortinet</td>
<td>为Fortinet AI增加新维度,允许SecOps团队与AI交互。</td>
<td>增强威胁检测、分析、响应、报告、剧本构建、修复。</td>
<td>依赖Fortinet生态。效果依赖AI模型。</td>
</tr>
<tr>
<td>CrowdStrike Charlotte</td>
<td>CrowdStrike</td>
<td>自动执行任务,简化安全操作,实时响应威胁。</td>
<td>自动化安全操作、威胁响应、安全分析。</td>
<td>依赖CrowdStrike生态。效果依赖模型和数据集。</td>
</tr>
<tr>
<td>Cortex® XSIAM平台</td>
<td>Palo Alto Networks</td>
<td>云交付的集成SOC平台,整合多个安全产品和功能,AI驱动。</td>
<td>统一安全能力、威胁响应、安全自动化。</td>
<td>依赖Palo Alto Networks生态。可能存在厂商锁定。</td>
</tr>
<tr>
<td>Vectra Cognito平台</td>
<td>Vectra</td>
<td>自动化威胁检测和响应,提高SOC效率,威胁优先级排序。</td>
<td>威胁检测、响应、优先级排序、安全分析。</td>
<td>依赖Vectra生态。效果依赖AI引擎。</td>
</tr>
<tr>
<td>天融信AI安全助手小天</td>
<td>天融信</td>
<td>基于天问大模型,智能分析客户行为、响应需求。</td>
<td>客户服务、安全产品辅助、告警分析、处置建议。</td>
<td>依赖天问大模型。效果依赖模型能力。</td>
</tr>
<tr>
<td>启明星辰AI安全助手盘小古</td>
<td>启明星辰</td>
<td>基于AI的网络安全运营智能助手,提升运营效率和效果。</td>
<td>安全运营、自动化运营、威胁分析。</td>
<td>依赖AI安全智能体。效果依赖模型融合。</td>
</tr>
<tr>
<td>网络安全LLM</td>
<td>知道创宇</td>
<td>基于攻防知识与安全GPT大模型融合的框架,该项目整合了多个针对不同任务的网络安全领域的LLMs</td>
<td>自动化分析流量以及文本安全任务。</td>
<td>该框架涉及知识库,需要注意幻觉效应</td>
</tr>
</tbody>
</table>
<h3>4.0.7. 7.LLM应用侧</h3>
<table>
<thead>
<tr>
<th>工具名称</th>
<th>产品原理</th>
<th>应用场景</th>
<th>存疑思考</th>
</tr>
</thead>
<tbody>
<tr>
<td>Wolverine</td>
<td>自动修复 Python 代码中的错误。</td>
<td>自动 debug,提高开发效率。</td>
<td>可能存在误修复,或引入新的问题。需要人工审查修复结果。</td>
</tr>
<tr>
<td>openai-cti-summarizer</td>
<td>基于 LLM 生成威胁情报的总结。</td>
<td>网络威胁情报 (CTI) 分析、安全报告和简报、安全事件响应、快速了解安全事件概况。</td>
<td>准确性和可靠性依赖于 LLM 模型和 CTI 源数据质量。可能出现信息丢失、误解或偏差。</td>
</tr>
<tr>
<td>RagSecOps</td>
<td>使用检索增强生成(RAG)模式构建的安全运营工具。</td>
<td>威胁检测和事件响应、漏洞管理和补丁管理、安全自动化。</td>
<td>准确性和误报率、计算资源消耗、数据隐私和安全问题、RAG 模型的检索质量和覆盖范围。</td>
</tr>
<tr>
<td>FlipLogGPT</td>
<td>分析日志和向量存储进行安全分析。</td>
<td>集成环境安全评估、安全事件调查、威胁狩猎。</td>
<td>依赖日志质量和完整性。分析结果可能受限于向量存储的构建。存在被溯源的风险。</td>
</tr>
<tr>
<td>Sovereign Chat</td>
<td>集成多个 AI 模型,提供安全知识问答服务。</td>
<td>快速获取安全知识、辅助安全决策、安全培训。</td>
<td>回答的准确性和可靠性依赖于集成的 AI 模型。可能产生幻觉或误导性信息。需要专业知识复核。</td>
</tr>
<tr>
<td>ZenGuard AI</td>
<td>低代码模型集成工具,用于构建具有安全防护的 LLM 应用。</td>
<td>提高 LLM 应用的安全性,例如:及时注入检测、越狱检测、个人身份信息检测、关键字检测等。</td>
<td>可能引入新的对抗攻击。依赖多个模型的集成和协同工作。对于新型攻击的防御能力可能有限。</td>
</tr>
<tr>
<td>Admyral</td>
<td>开源网络安全自动化和调查助手,结合AI。</td>
<td>自动化安全任务,辅助安全分析和调查。 可能包含自动化脚本执行,数据采集整合,可视化,以及LLM驱动的安全分析建议</td>
<td>可能降低人工判断的重要性,需要平衡自动化与人工经验。AI分析的准确性、可靠性、可解释性需验证。可能需要根据具体场景进行定制化。</td>
</tr>
</tbody>
</table>
<ul>
<li><a href="https://mp.weixin.qq.com/s/0SBm0N99ztl1CuvWaImHzQ">【全文2.4万字】大模型注入攻击方法汇总</a></li>
<li><a href="https://zhuanlan.zhihu.com/p/675509396">一文读懂:大模型RAG(检索增强生成)含高级方法</a></li>
<li><a href="https://keenlab.tencent.com/zh/2024/04/11/2024-SecCorpus0411/">SecCorpus: 构建安全领域大模型数据的技术实践</a></li>
</ul>
</content:encoded></item><item><title>Android BAL Bypass攻击面分析</title><link>https://picoorg.github.io/posts/android-bal-bypass%E6%94%BB%E5%87%BB%E9%9D%A2%E5%88%86%E6%9E%90/</link><guid isPermaLink="true">https://picoorg.github.io/posts/android-bal-bypass%E6%94%BB%E5%87%BB%E9%9D%A2%E5%88%86%E6%9E%90/</guid><pubDate>Tue, 03 Sep 2024 00:00:00 GMT</pubDate><content:encoded><h1>Android BAL Bypass攻击面分析</h1>
<h2>一、Android BAL</h2>
<p>后台弹窗(<code>BAL, Background Activity Launch</code>)在Android 10以前是被允许的,恶意APP利用这种特性,在用户正常使用手机时弹出,和PC端的桌面窗口广告类似,会覆盖整个屏幕或弹窗。比如在进入后台直接唤起自身,代码如下:</p>
<pre><code>public class MainActivity extends Activity {
...
@Override
protected void onDestroy() {
super.onDestroy();
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
}
}
</code></pre>
<p><a href="https://developer.android.com/guide/components/activities/background-starts?hl=zh-cn">Google</a>在Android 10引入后台<code>Activity</code>启动限制:Android 10(API 级别 29)及更高版本会限制应用何时可以启动<code>activity</code>背景。这些限制有助于最大限度地减少对用户的干扰,让用户能够更好地控制其屏幕上显示的内容。但为了保障系统和部分应用功能,BAL在设计之初同时引入了一批白名单限制,这也给恶意应用带来了一些绕过限制的可能。</p>
<h3>1.1 BAL限制逻辑</h3>
<p>主要逻辑位于<code>WMS</code>服务中的<code>ActivityStarter</code>,具体代码在<code>platform/frameworks/base/services/core/java/com/android/server/wm/ActivityStarter.java</code></p>
<h3>1.2 BAL白名单</h3>
<h2>二、Bypass Case</h2>
<h3>2.1 CVE-2023-40109</h3>
<p>https://android.googlesource.com/platform/frameworks/base/+/387d258cf10a30537fc48dc0e48d28071efa92e7</p>
<h3>2.2 CVE-2024-0034</h3>
<p>https://android.googlesource.com/platform/frameworks/base/+/653f7b0d234693309dc86161af01831b64033fe6</p>
<h3>2.3</h3>
<h2>三、参考文献</h2>
<ul>
<li><a href="https://mp.weixin.qq.com/s/hGx8FNjI37trnZehY839bQ">恶意App后台弹窗技术手法分析</a></li>
<li><a href="https://developer.android.com/guide/components/activities/background-starts?hl=zh-cn">针对从后台启动 activity 的限制</a></li>
<li><a href="https://wrlus.com/android-security/bindservice-error-handle/">BindService错误处理与CVE-2023-21138 &amp; CVE-2023-40130</a></li>
<li><a href="https://blog.canyie.top/2024/04/18/android-security-bulletin-index/">Android 每月安全补丁分析索引</a></li>
</ul>
</content:encoded></item><item><title>Android漏洞分析</title><link>https://picoorg.github.io/posts/android-framework%E6%94%BB%E5%87%BB%E9%9D%A2%E5%88%86%E6%9E%90/</link><guid isPermaLink="true">https://picoorg.github.io/posts/android-framework%E6%94%BB%E5%87%BB%E9%9D%A2%E5%88%86%E6%9E%90/</guid><pubDate>Wed, 15 May 2024 00:00:00 GMT</pubDate><content:encoded><h1>Android简介</h1>
<h1>Android Binder</h1>
<h1>Bundle mismatch</h1>
<h1>LaunchAnyWhere</h1>
<h1>Android WebView jsbridge</h1>
<h1>参考文献</h1>
<ul>
<li><a href="https://tech.meituan.com/2017/09/14/android-binde-kcon.html">Android Binder漏洞挖掘技术与案例分享</a></li>
<li><a href="https://colbert337.github.io/2015/08/24/android-attack-surface/">Android Attack Surface</a></li>
</ul>
</content:encoded></item><item><title>AndroidBox-01-修改SystemProperty</title><link>https://picoorg.github.io/posts/androidbox-01-%E4%BF%AE%E6%94%B9systemproperty/</link><guid isPermaLink="true">https://picoorg.github.io/posts/androidbox-01-%E4%BF%AE%E6%94%B9systemproperty/</guid><description>AndroidBox第一个模块,仅需root权限可修改任意SystemProperty。</description><pubDate>Wed, 15 Jan 2025 00:00:00 GMT</pubDate><content:encoded><h1>1. 简介</h1>
<p><a href="https://github.com/PicoOrg/AndroidBox">Android项目地址</a></p>
<p>在做<code>Android</code>安全研究时,免不了对系统<code>build.prop</code>属性进行修改。常见修改方法有:</p>
<ol>
<li>使用<code>mprop</code>工具</li>
<li>使用<code>magisk</code>自带的命令<code>resetprop</code></li>
<li>安装<code>magisk</code>或<code>kernelsu</code>的相关模块</li>
<li>手动修改<code>framework</code>源码后编译</li>
</ol>
<p>其中,方法1主要采用的是<code>init</code>进程内存修改<code>bypass</code>,方法2和4的原理都是对<code>framework</code>源码进行修改,方法3根据模块不同有不同的原理。本文主要针对方法1展开分析。</p>
<h1>2. 原理</h1>
<p>在看雪大佬<a href="https://bbs.kanxue.com/thread-246081.htm">文章</a>中,回复楼层出现了<code>mprop</code>其他<a href="https://gist.github.com/pinohans/96962ccc8708467ca319df9b5bbec57d">实现代码</a>。</p>
<p>对<code>Android</code>源码分析发现,设备对应<code>pixel7</code>的<code>android14</code>版本,设置属性函数<code>__system_property_set</code>最终会调用到<code>init</code>进程中的<code>property_service</code>的<code>PropertySet</code>函数,流程如下:</p>
<pre><code>ndk __system_property_set
1 =&gt; /system/lib64/libc.so
bionic/libc/bionic/system_property_set.cpp __system_property_set
2 =&gt; /system/bin/init
system/core/init/property_service.cpp handle_property_set_fd
3 =&gt; /system/bin/init
system/core/init/property_service.cpp HandlePropertySet()
4 =&gt; /system/bin/init
system/core/init/property_service.cpp PropertySet
5 =&gt; /system/lib64/bootstrap/libc.so
bionic/libc/bionic/system_property_api.cpp __system_property_update
6 =&gt; /system/lib64/bootstrap/libc.so
bionic/libc/system_properties/system_properties.cpp SystemProperties::Update
</code></pre>
<ol>
<li>调用<code>ndk</code>函数<code>__system_property_set</code>设置属性,会先判断<code>g_propservice_protocol_version</code>值,根据版本调用不同发送方式,后文以<code>kProtocolVersion2</code>为例。</li>
</ol>
<pre><code>// bionic/libc/bionic/system_property_set.cpp
// https://cs.android.com/android/platform/superproject/main/+/0aee4d97c97a87812f9764920f54b40de6958f1c:bionic/libc/bionic/system_property_set.cpp
__BIONIC_WEAK_FOR_NATIVE_BRIDGE
int __system_property_set(const char* key, const char* value) {
...
if (g_propservice_protocol_version == kProtocolVersion1) { // g_propservice_protocol_version取ro.property_service.version值,大或等于2是kProtocolVersion2,否则是kProtocolVersion1
...
prop_msg msg;
memset(&amp;msg, 0, sizeof msg);
msg.cmd = PROP_MSG_SETPROP;
strlcpy(msg.name, key, sizeof msg.name);
strlcpy(msg.value, value, sizeof msg.value);
return send_prop_msg(&amp;msg);
} else {
...
PropertyServiceConnection connection(key);
...
SocketWriter writer(&amp;connection);
if (!writer.WriteUint32(PROP_MSG_SETPROP2).WriteString(key).WriteString(value).Send()) {
</code></pre>
<ol>
<li>在<code>system/core/init/property_service.cpp</code>里函数<code>handle_property_set_fd</code>处理<code>socket</code>数据,进入<code>PROP_MSG_SETPROP2</code>分支,接收数据后调用<code>HandlePropertySet</code>函数</li>
</ol>
<pre><code>// system/core/init/property_service.cpp
// https://cs.android.com/android/platform/superproject/main/+/0aee4d97c97a87812f9764920f54b40de6958f1c:system/core/init/property_service.cpp
static void handle_property_set_fd(int fd) {
...
int s = accept4(fd, nullptr, nullptr, SOCK_CLOEXEC);
...
if (getsockopt(s, SOL_SOCKET, SO_PEERCRED, &amp;cr, &amp;cr_size) &lt; 0) {
...
SocketConnection socket(s, cr);
...
if (!socket.RecvUint32(&amp;cmd, &amp;timeout_ms)) {
...
switch (cmd) {
...
case PROP_MSG_SETPROP2: {
std::string name;
std::string value;
if (!socket.RecvString(&amp;name, &amp;timeout_ms) ||
!socket.RecvString(&amp;value, &amp;timeout_ms)) {
...
auto result = HandlePropertySet(name, value, source_context, cr, &amp;socket, &amp;error);
</code></pre>
<ol>
<li>在函数<code>HandlePropertySet</code>处理权限校验及特殊系统属性,最后进入<code>PropertySet</code>函数</li>
</ol>
<pre><code>// system/core/init/property_service.cpp
// https://cs.android.com/android/platform/superproject/main/+/0aee4d97c97a87812f9764920f54b40de6958f1c:system/core/init/property_service.cpp
std::optional&lt;uint32_t&gt; HandlePropertySet(const std::string&amp; name, const std::string&amp; value,
const std::string&amp; source_context, const ucred&amp; cr,
SocketConnection* socket, std::string* error) {
if (auto ret = CheckPermissions(name, value, source_context, cr, error); ret != PROP_SUCCESS) {
...
if (StartsWith(name, "ctl.")) {
return {SendControlMessage(name.c_str() + 4, value, cr.pid, socket, error)};
}
... // 特殊处理sys.powerctl,其作用是设备重启,但目前userspace已经弃用了,aosp会记录设备关机的原因
... // 特殊处理selinux.restorecon_recursive,如果来自非init进程,且value不为空,触发异步恢复SELinux,如果来自init进程,会导致执行时间过长
return PropertySet(name, value, socket, error);
}
</code></pre>
<ol>
<li>在函数<code>PropertySet</code>处理属性修改,如果<code>prop</code>存在进行<code>__system_property_update</code>修改,否则进行<code>__system_property_add</code>添加</li>
</ol>
<pre><code>// system/core/init/property_service.cpp
// https://cs.android.com/android/platform/superproject/main/+/0aee4d97c97a87812f9764920f54b40de6958f1c:system/core/init/property_service.cpp
static std::optional&lt;uint32_t&gt; PropertySet(const std::string&amp; name, const std::string&amp; value,
SocketConnection* socket, std::string* error) {
...
prop_info* pi = (prop_info*)__system_property_find(name.c_str());
if (pi != nullptr) {
// ro.* properties are actually "write-once".
if (StartsWith(name, "ro.")) { // ro属性校验
*error = "Read-only property was already set";
return {PROP_ERROR_READ_ONLY_PROPERTY};
}
__system_property_update(pi, value.c_str(), valuelen);
} else {
int rc = __system_property_add(name.c_str(), name.size(), value.c_str(), valuelen);
if (rc &lt; 0) {
*error = "__system_property_add failed";
return {PROP_ERROR_SET_FAILED};
}
}
... // 处理需要持久化的persist.和next_boot.属性,并进行属性修改通知
</code></pre>
<ol>
<li>在<code>bionic/libc/bionic/system_property_api.cpp</code>里函数<code>__system_property_update</code>调用<code>SystemProperties::Update</code></li>
</ol>
<pre><code>// bionic/libc/bionic/system_property_api.cpp
// https://cs.android.com/android/platform/superproject/main/+/0aee4d97c97a87812f9764920f54b40de6958f1c:bionic/libc/bionic/system_property_api.cpp
static SystemProperties system_properties;
...
__BIONIC_WEAK_FOR_NATIVE_BRIDGE
int __system_property_update(prop_info* pi, const char* value, unsigned int len) {
return system_properties.Update(pi, value, len);
}
</code></pre>
<ol>
<li>在<code>bionic/libc/system_properties/system_properties.cpp</code>里函数<code>SystemProperties::Update</code>最终将<code>value</code>写入<code>prop_area</code></li>
</ol>
<pre><code>// bionic/libc/system_properties/system_properties.cpp
// https://cs.android.com/android/platform/superproject/main/+/0aee4d97c97a87812f9764920f54b40de6958f1c:bionic/libc/system_properties/system_properties.cpp
int SystemProperties::Update(prop_info* pi, const char* value, unsigned int len) {
...
prop_area* pa = contexts_-&gt;GetPropAreaForName(pi-&gt;name);
prop_area* override_pa =
have_override ? appcompat_override_contexts_-&gt;GetPropAreaForName(pi-&gt;name) : nullptr;
...
auto* override_pi = const_cast&lt;prop_info*&gt;(have_override ? override_pa-&gt;find(pi-&gt;name) : nullptr);
...
memcpy(pa-&gt;dirty_backup_area(), pi-&gt;value, old_len + 1);
if (have_override) {
memcpy(override_pa-&gt;dirty_backup_area(), override_pi-&gt;value, old_len + 1);
}
</code></pre>
<h1>3. 实现</h1>
<p>一种比较暴力的思路,发现<code>init</code>进程中,只有<code>PropertySet</code>函数会校验<code>ro.</code>属性,并且通过检索发现<code>init modules</code>中只有一个位置包含字符串<code>ro.\x00</code>于是:</p>
<ol>
<li>非<code>ro.</code>属性:很简单,只要调用<code>__system_property_set</code>;</li>
<li><code>ro.</code>属性:利用<code>ptrace</code>的<code>Attach</code>进程 -&gt; <code>PeekData</code>定位 -&gt; <code>PokeData</code>修改,篡改校验规则后调用<code>__system_property_set</code>,在成功后恢复现场;</li>
</ol>
<h1>4. 其他细节</h1>
<p>根据<code>baihong</code>大佬提醒,<code>__system_property_set</code>调用会产生痕迹,修改<code>/system_ext/etc/build.prop</code>属性可能表现与<code>/system/build.prop</code>不一致。</p>
<h2>4.1. __system_property_set执行影响</h2>
<p>根据提示位置<code>system/libbase/properties.cpp</code>,代码在<code>/system/lib64/libbase.so</code>,发现与「原理」章节流程中第6步不一致,实际未调用。但<code>serial</code>值确实会增加:</p>
<pre><code>// bionic/libc/system_properties/system_properties.cpp
// https://cs.android.com/android/platform/superproject/main/+/0aee4d97c97a87812f9764920f54b40de6958f1c:bionic/libc/system_properties/system_properties.cpp
int SystemProperties::Update(prop_info* pi, const char* value, unsigned int len) {
...
uint32_t serial = atomic_load_explicit(&amp;pi-&gt;serial, memory_order_relaxed);
...
serial |= 1;
...
int new_serial = (len &lt;&lt; 24) | ((serial + 1) &amp; 0xffffff);
atomic_store_explicit(&amp;pi-&gt;serial, new_serial, memory_order_relaxed);
if (have_override) {
atomic_store_explicit(&amp;override_pi-&gt;serial, new_serial, memory_order_relaxed);
}
__futex_wake(&amp;pi-&gt;serial, INT32_MAX); // Fence by side effect
atomic_store_explicit(serial_pa-&gt;serial(),
atomic_load_explicit(serial_pa-&gt;serial(), memory_order_relaxed) + 1,
memory_order_release);
if (have_override) {
atomic_store_explicit(override_serial_pa-&gt;serial(),
atomic_load_explicit(serial_pa-&gt;serial(), memory_order_relaxed) + 1,
memory_order_release);
}
__futex_wake(serial_pa-&gt;serial(), INT32_MAX);
return 0;
}
</code></pre>
<h2>4.2. system_ext属性不一致</h2>
<p>经验证,通过<code>AndroidBox</code>同样可以修改<code>/system_ext/etc/build.prop</code>中的属性。但是由于其文件属性问题,会导致与初始值不一致:</p>
<pre><code>panther:/ # ls -al /system_ext/etc/build.prop
-rw-r--r-- 1 root root 999 2009-01-01 08:00 /system_ext/etc/build.prop
panther:/ # ls -al /system/build.prop
-rw------- 1 root root 4562 2009-01-01 08:00 /system/build.prop
</code></pre>
<h1>5. 挖坑</h1>
<p><code>/system/lib64/libbase.so</code>的真正用途需要进一步分析</p>
<h1>6. 参考文献</h1>
<ul>
<li><a href="https://bbs.kanxue.com/thread-246081.htm">android ro.debuggable属性调试修改(mprop逆向)</a></li>
<li><a href="https://blog.csdn.net/jinmie0193/article/details/111355867">Android修改ro.debuggable 的四种方法</a></li>
</ul>
</content:encoded></item><item><title>AndroidBox-02-在Android设备运行libFuzzer</title><link>https://picoorg.github.io/posts/androidbox-02-%E5%9C%A8android%E8%AE%BE%E5%A4%87%E8%BF%90%E8%A1%8Clibfuzzer/</link><guid isPermaLink="true">https://picoorg.github.io/posts/androidbox-02-%E5%9C%A8android%E8%AE%BE%E5%A4%87%E8%BF%90%E8%A1%8Clibfuzzer/</guid><description>AndroidBox的子项目,实现灵活的libFuzzer入口。</description><pubDate>Wed, 19 Feb 2025 00:00:00 GMT</pubDate><content:encoded><h1>简介</h1>
<p><a href="https://github.com/PicoOrg/AndroidBox">Android项目地址</a></p>
<p>说来惭愧,入门<code>Android</code>安全研究近一年以来,仍停留在审计的初级阶段(产出较少甚至可以说毫无产出),希望能在方法上有进一步提升。同时,又想把之前最薄弱的<code>Fuzz</code>能力补齐,因此选择了这个切入点作为第二个模块。希望能够为后来的研究者有一丝丝帮助。</p>
<h1>使用</h1>
<h2>编译</h2>
<p>编译过程比较简单</p>
<h1>工程化思路</h1>
<h1>效果</h1>
</content:encoded></item><item><title>Android逆向指路</title><link>https://picoorg.github.io/posts/android%E9%80%86%E5%90%91%E6%8C%87%E8%B7%AF/</link><guid isPermaLink="true">https://picoorg.github.io/posts/android%E9%80%86%E5%90%91%E6%8C%87%E8%B7%AF/</guid><pubDate>Tue, 05 Nov 2024 00:00:00 GMT</pubDate><content:encoded><h1>1. 预备知识</h1>
<h2>1.1. Android 版本相关</h2>
<p><a href="https://source.android.com/docs/setup/reference/build-numbers">Android 代号、标记和 build 号</a></p>
<h2>1.2. GKI</h2>
<p><code>product kernel</code>(也称为 <code>device kernel</code> 或 <code>OEM kernel</code>)是指设备上搭载的内核。在 <code>GKI</code> 之前,<code>product kernel</code> 受到一系列上游内核变更影响,如<code>Linux Long Term Supported (LTS), Linux Long Term Supported (LTS), vendor kernel</code>等。这些上游修改最终导致内核代码中有多达 <code>50%</code> 是树外代码,而非来自 <code>Linux</code> 内核本身的迭代。在 <code>GKI</code> 之前,几乎所有设备都具有自定义内核,而这导致了严重的内核碎片化问题。</p>
<p><code>GKI</code> 通过统一核心内核并将 <code>SoC</code> 和板级支持从核心内核移至可加载的供应商模块中,解决了内核碎片化问题。<code>GKI</code> 还为供应商模块提供稳定的内核模块接口 (<code>KMI</code>),因此模块和内核可以独立进行更新。</p>
<table>
<thead>
<tr>
<th>版本</th>
<th>Android 版本</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>GKI 2.0</td>
<td>Android 12 +</td>
<td>在 GKI 2.0 中,发布时搭载内核版本 5.10 的设备必须附带 GKI 内核。</td>
</tr>
<tr>
<td>GKI 1.0</td>
<td>Android 11 +</td>
<td>在 GKI 1.0 中,发布时搭载内核版本 5.4 的设备必须通过 GKI 测试。</td>
</tr>
<tr>
<td>旧版内核</td>
<td></td>
<td>内核版本&lt;= 4.19</td>
</tr>
</tbody>
</table>
<p>因此选择 <code>GKI</code> 设备可以使用较为稳定的 <code>root</code> 解决方案,其中一种 <code>KernelSU</code> 就是 <code>Android GKI</code> 设备的 <code>root</code> 解决方案,它工作在内核模式,并直接在内核空间中为用户空间应用程序授予 <code>root</code> 权限。</p>
<h1>2. 设备 ROOT</h1>
<h2>2.1. OPPO</h2>
<p>由于开放解锁的原因一般使用 <code>OnePlus</code> 设备,选择 <code>GKI</code> 内核刷入 <code>KernelSU</code></p>
<pre><code>```bash
$ adb reboot bootloader
# 关闭 `bootloader` 锁定后即可进行解锁 fastboot oem unlock
$ fastboot boot android12-5.10.168_2023-05-boot.img
```
</code></pre>
<h2>2.2. vivo</h2>
<p>参考文章<a href="https://xdaforums.com/t/how-to-unlock-bootloader-of-vivo-phones.3686690/">How To Unlock Bootloader Of Vivo Phones ?</a></p>
<p>方法一:</p>
<pre><code>```bash
# Enable Oem unlock from developer options, *#*#759*#*#
$ adb reboot bootloader
$ fastboot bbk unlock_vivo
$ fastboot vivo_bsp unlock_vivo
$ fastboot bbk lock_vivo
$ fastboot vivo_bsp lock_vivo
```
</code></pre>
<p>方法二:</p>
<ol>
<li>Extract the BLUnlocker_v1.zip (You have done this already, trust me, i know you did it :)</li>
<li>Install Qualcomm USB Driver for Qdloader 9008 mode.</li>
<li>Get your phone, press vol up &amp; down buttons together &amp; connect USB at the same time.</li>
<li>Extract your firehose file from your stock firmware (It's usually named like 'prog<em>emmc_firehose</em>****.mbn') &amp; place it in the current directory.</li>
<li>Check the port number your device is connected to in WIndows Device Manager. (Looks like COM*)</li>
<li>Double Click the 'dump_devinfo.bat' file.</li>
<li>Enter the port number (from step 5) &amp; press enter</li>
<li>Edit your devinfo.img using HxD Hex Editor as shown in my video (Or you can comment on my channel with a link to your devinfo.img)</li>
<li>Double click 'unlock.bat'</li>