知道创宇研发技能表

说明

关于知道创宇

知行合一 | 守正出奇

知道创宇是一家黑客文化浓厚的安全公司,愿景是让互联网更好更安全

本技能表为知道创宇安全研发工程师的技能树集合,是的,很庞大

聪明的人,会根据每个 Tip 自驱动扩展

不聪明的人,坐等别人手把手,不仅不适合知道创宇,也不适合任何有极客精神的公司


一、通用技能

公司与个人

公司是盈利性组织

个人和公司必须双赢

在认同公司理念且能够给公司创造足够价值的基础上,为个人发展而工作

Who am I

黑客是守正出奇且具备创造力的群体

守正出奇

这条正道/底线得坚守

但如果太过正就迂腐了,为了搞定任务有时得出奇招

创造力

一个没有创造力的人是多么的可怜,对于团队来说也是一种耻辱

本技能表的本质目的只有一个:引导你拥有足够的创造力

黑客也可以是一种思维方式

我们需要对得起名片上的那个头衔:工程师、研究员

牛人姿态

即使现在不是牛人,也得具备这样的姿态

没有一定扎实内功与远见的人很少有这样的姿态

拥有不将就的做事风格,迟早是牛人

如何做事

方法论

完成一件事有好几条途径,优秀的人的途径最短

任务拆分很容易得出做事的方法论

好的「方法论」会让你具备更强的「创造力」!

时刻问自己:「是否具备创造力?」

任务拆分

成长过程会经历:能力越大、责任越大、事情越多

思路

拆分细化为多个点

排好优先级

任务四象限,决定优先级

紧急重要

赶紧搞定

重要不紧急

时刻保持关注,以免沦为「紧急重要」

紧急不重要

少少益善,学会拒绝

不紧急不重要

靠自律

SMART 原则

S:任务是否明确

不明确的任务搞起来就是浪费生命

M:任务是否可度量

不可度量如何体现价值?

A:任务是否可搞定

搞不定就不应该接,接就得有魄力搞定

R:任务的相关性如何

决定了任务的价值,相关性越高越能体现价值,比如这个任务搞定了能让团队获得公司、客户等更大的认可

T:任务的时间

Timeline:任务时间轴,什么时间点需要搞定什么

Deadline:任务的最后期限,做评估时最好提前,因为总会有各种意外或拖延本性

Timeline 上一些很关键的时间点我们可以称为里程碑,搞定每个里程碑应该庆祝下

自己欠缺什么,立马发现

是否需要寻求帮助,谁能帮你,自己单干?

团队

士气第一

当你有团队时,分配与调度好任务很关键

做得好是真并发

做不好会死锁

沟通、反馈与责任

一个无沟通能力的人,要么是天才,要么是不可爱的人,不过天才也就寥寥无几而已,你并不是

反馈要及时

避免出问题不反馈,影响进度

方式

正式的:邮件

临时的:微信等即时通信

着急的:给个电话

工作有大小,责任心无大小

周报的透明

意义:大家互相了解工作与心得,有利于自己的判断与成长

观察是一种很重要的技能

不是单纯的给领导汇报工作

周报需体现本周工作总结、下周工作计划、心得/问题/建议(我们叫唧唧歪歪)

周报可以很好体现一个人的

总结能力

计划能力

分享能力

想象下:一个人从来没有心得/问题/建议的沉淀或反馈,这个人是一个相对封闭的人,在团队作战中很难达到默契

当然,这种分享能力远不仅仅是在周报这种形式里

团队意识

很多人都说自己具备足够好的团队意识,但是有些人却并不是这样

举个小例子:一个 10 人团队约定早上 10 点开会,而你迟到了 10 分钟,对于团队来说你浪费了整个团队 100 分钟(10 人 * 10 分钟)的生命。有些人无羞愧之心要么是意识不到这点,要么这个团队的风气就是这样…

团队意识是建立在互相信任的基础上

“尺有所短,寸有所长” 是一个优秀的团队必须要达成的共识

Leader 最关键,优秀的 Leader 一定会有个优秀团队

兵熊熊一个

将熊熊一窝

如何拥有个优秀的团队是一个复杂的话题

成长

新事物的敏感性

保持好奇心

不要局限在自己的圈子,适当跨界吸收灵感

订阅国内外优秀博客/资源

选择性参与一些必要的会议,听必要的主题,讨论必要的话题

关于知识

好记性不如烂笔头,勤做笔记所带来的收益远超你想象

尽快尽早的将自己的知识形成系统化认知,会达到事半功倍的效果

对知识的渴望程度决定了前进动力的大小

当知识很廉价地摆在你面前,你反而不会珍惜

对知识保持敬畏之心

关于信息获取

拓宽自己获取信息的渠道,但不要陷入低信噪比的泥潭

信息筛选 + 与你相关性如何? + 整体可信度多高? + 有效信息量多少?

处理并重新组织为你自己的理解

不要让自己成为矫情/浮夸的人

和比你厉害的人在一起,和一流的人工作

指点往往是精华

杜绝笨蛋爆炸

二流的人招进来的人不太可能是一流的

久而久之一个团队就笨蛋爆炸了

思考

批判性思考

解构与系统化思考

换位思考

对于一个团队来说,这点太关键

提问的智慧

遇到问题先独立思考,尝试独立解决,尽最大努力后再提问

《你尽力了吗?》 

提问时,礼貌很关键(对知识的敬畏),清晰表达很关键

解决后,分享出来帮助更多需要帮助的人

小事心态

越基础的事越关键,越需要细心

不要一味盲目追求「高级感」,而忽视「小事」/「简单事」/「基础事」

基础不牢、地动山摇

小事做不好,别提大事

无论是个人还是团队的成长都需要不断沉淀知识,没有沉淀根基不稳

完成的定义

比如写个 POC

搞懂了目标 Web 应用漏洞的原理

熟练运用 Python 各相关模块与机制

熟练了解了 HTTP 协议

HTTP 请求

HTTP 响应

代码写得够规范,让人看起来就是爽

程序经过足够的测试

黑盒测试

白盒测试

及时反馈进度

我遇到困难了

我搞定了

更新相关文档,沉淀

熟练的定义

比如熟练 SQL 注入

SQL 语句这门“语言”能脱离文档顺手写出

主流数据库的 SQL 特有函数、存储过程、机制我都了如指掌

MySQL

PostgreSQL

牛逼的工具我不仅用的顺其自然,源码还读过几遍,我能修改

pocsuite3

sqlmap

metasploit

nmap

我具备创造性,而不仅仅是跟在大牛身后

研究出了几个不错的技巧

发了几篇不错的 Paper

对外会议/沙龙等进行了几次分享

写出了自己的相关工具,爽

我实战了 N 回,遇到了很多奇葩环境,我有足够的信心绕过

以上这些之后,这才叫熟练!其他同理

好书推荐

推荐理由

打通任督二脉的书,怎能不看?

但,尽信书不如无书

任何科学研究最终必须至少到哲学层面,触碰到上帝的脚

具体技术类书籍请见「专业技能」相关部分

鸡汤类

UNIX 编程艺术

极客的思维哲学

使用简洁的接口拼合简单的部件

清晰胜于机巧

设计时考虑拼接组合

策略同机制分离,接口同引擎分离

设计要简洁,复杂度能低则低

除非确无它法,不要编写庞大的程序

设计要可见,以便审查和调试

健壮源于透明与简洁

把知识叠入数据以求逻辑质朴而健壮

接口设计避免标新立异

如果一个程序没什么好说的,就保持沉默

出现异常时,马上退出并给出足量错误信息

宁花机器一分,不花程序员一秒

避免手工hack,尽量编写程序去生成程序

雕琢前先得有原型,跑之前先学会走

决不相信所谓“不二法门”的断言

设计着眼未来,未来总比预想快

黑客与画家

印象深刻:设计者的品味

好设计是简单的设计

抓住本质

好设计是永不过时的设计

如果解决方法是丑陋的,那就肯定还有更好的解决方法,只是还没有发现而已

好设计是解决主要问题的设计

好设计是启发性的设计

好设计通常是有点趣味性的设计

好设计是艰苦的设计

好设计是看似容易的设计

好设计是对称的设计

好设计是模仿大自然的设计

好设计是一种再设计

好设计是能够复制的设计

好设计往往是奇特的设计

好设计是成批出现的

好设计常常是大胆的设计

浪潮之巅

感受 IT 帝国的崛起与没落,我们现在站在又一个互联网浪潮之巅

代码2.0 - 网络空间中的法律

网络不是法外之地

洁癖类

重构

代码整洁之道

代码大全 2

敏捷类

Rework中文版

37signals 团队的敏捷经验

高效程序员的 45 个习惯

产品类

人人都是产品经理

结网

神书

自私的基因

失控


二、专业技能

原则

经典原理性书籍为第一原则

至少完整看完与练习好如下其中一本

《深入理解计算机系统》

《UNIX环境高级编程》

“Don’t repeat yourself” (DRY)

在规避过渡优化的前提下,重复2遍以上的操作就要提前考虑优化

不是必须项,但是是技术路上的助推器

有一个稳定的翻墙渠道,并能使用英文进行快速精准检索技术问题,为什么不用中文?懂的都懂…

使用AI作为辅助工具(ChatGPT/Copilot/Ollama…) 提示:尽信书,不如无书

基础必备

基本环境

安装一个Linux发行版

推荐安装Kali Linux:https://www.kali.org

Ubuntu/Debian/Fedora 也挺不错的

《鸟哥的Linux私房菜 基础篇》值得通读并实操

Shell用起来

可以随着教程粗略学习一遍: 52fhy/shell-book

推荐扩展了解的几个Shell: zsh/fish/tcsh

man man or RTFM

熟练 Vim

实战至少 3 回合:http://coolshell.cn/articles/5426.html

熟练 Vim 后搜索:[ zsh | bash | fish | firefox | vscode | idea | … ] vim keybindings,会有惊喜

编码能力

上手 Python

优点:学习成本很低,能够快速实现demo,而且大数据,机器学习也有一席之地

官方手册

至少过一遍,这都没过一遍,视野会局限

行之说:「我没看过 Python 的书,却熟读官方手册……」

https://www.python.org/dev/peps/pep-0008/

http://learnpythonthehardway.org/book/

试试 Golang?

优点:学习成本低,效率高,可跨平台交叉编译二进制静态文件

官方手册

https://golang.google.cn/doc/effective_go

《The Go Programming Language》

快速上手一门语言的方法论

进程,线程,锁,并发,并行这些概念清晰理解

编程语言的本质:数据结构 + 程序控制流 + 数据与程序的相互转化

程序控制流:1. 顺序 2. 分支 3. 循环

编程语言常见的数据类型/结构:

基本数据类型:整数、浮点数、字符、布尔值

引用数据类型:数组、结构体、类

复合数据类型:字符串、集合、映射(字典)

然后还有什么?文件I/O、网络通信之类的接口调用一下

先用起来,作用域、生命周期 这些踩踩坑就会理解

文档能力

Word 文档编写,看去要专业,尤其对外的

Excel 里面大量的统计、图表功能,需要善于使用

PPT 演讲、培训等必备,如何做好 PPT?百度一下…

以上所有功能,统统可以安装国产软件WPS完成

Markdown 非常适合做日常研究记录,还可以转换为其他格式

进一步

yEd

Visio

Freemind

Sphinx

本技能表就是这个制作

Xmind

基础运维实践

家庭软路由或者树莓派折腾一下

从上帝视角去看家里网络的流量数据(suricata,snort)

查看或者禁用某个内网设备的流量(iptables)

配置一个公网能够接入的 VPN ,搭建一个技术博客

在安全的前提下,映射一个内网的 SSH 端口至互联网, 直观感受一下互联网的暴力破解和攻击力度

pve/kvm/virtualbox/vmware/docker

大量的操作系统、开发环境、漏洞环境可以随时搭建

借助AI快速上手诸如:FreeBSD,OpenBSD,Solaris 等等系统

根据业务需求组建一个独立的网络环境,可进行测试、开发、漏洞验证

openWRT/Arduino/Home Assistant

海量的家用路由器,摄像头,以及IoT设备的基础系统

常见IoT设备的操作管理,焊接,代码编译刷写以及传感数据的获取

家用智能设备的单独管控

在上述几个条件的基础上,构建自己的私有云环境

NAS: 诸多数据的存储池和云盘服务

Nginx+webdav+Joplin: 私人的笔记服务

BitWarden:私人的密码存储服务

安全运维能力

资产测绘

已知漏洞扫描

基线检查 (安全策略与合规性检查)

入侵检测与监控

后门排查

攻击溯源

文件取证

威胁情报

通用安全能力/概念

密码学

社会工程学

网络发现和管理

抓包和流量分析

虚拟化与隔离

逆向工程

恶意文件识别(与 免杀)

漏洞分析/挖掘

专业安全能力

Web 安全

二进制安全

移动安全

IoT安全

浏览器安全

区块链安全

AI 安全

工程化能力

研发能力

编码环境

前端

爬虫进阶

调度

并发

数据结构

数据库

大数据处理

DevOps

调试

持续集成

协作

AI 应用

设计思想

牛人 1, 2, 3

1 研究:研究东西,有足够洞察力,研究水准不错

2 研发:Hack Idea 自己有魄力实现,不懂研发的黑客如同不会游泳的海盗

3 工程:研发出来的需要实战、需要工程化,否则只是玩具,而不能成为真的武器


三、通用安全能力/概念

安全研究员的基本功,决定了研究能力的下限,这些即可以是实用于其他领域的工具方法,又可以作为单独的研究方向。

密码学

对称加密

AES

DES

3DES

SM1 / SM4

非对称加密

RSA

ECC

SM2

Hash算法

MD5

SHA1

SHA256

SM3

NTLM hash

混合加密方案/应用

SSL/TLS

SSH

IPsec

密码爆破

社会工程学

信息获取

社交工程侦查

垃圾搜寻

个人疏忽泄露

行为诱导

钓鱼,各种各样的钓鱼

伪装利用同情心、亲和力或权威

群体压力

尾随捎带

大家在网络空间也要记得保护好自己

网络发现和管理

公网设备发现

网络空间测绘引擎 ZoomEye

内网拓扑分析

梯子/内网穿透

机场

v2ray

wireguard

frp转发

ssh隧道

还有很多隧道用法

如何给浏览器、shell、docker等环境配置代理就不多赘述了

抓包和流量分析

curl

加-v参数后理解HTTP协议最佳工具之一,不止于此,还支持很多其它协议。。。

很不错的教程: https://www.ruanyifeng.com/blog/2019/09/curl-reference.html

更多的技巧,man一下吧

BurpSuite

抓包与各种调试

拦截修改

重放功能

编码解码/POST 提交

kali默认自带社区版,够你用了

Mitmproxy

中间人代理工具,可以用来拦截、修改、保存 HTTP/HTTPS 请求

Wireshark/tcpdump

各种强大的过滤器语法

各种硬件接口与协议的支持

可以配合 curl 进行协议分析学习

虚拟化与隔离

这里不讨论广义上的虚拟化技术,只是在安全研究中经常会接触到的虚拟化概念

沙箱

其核心目的是提供隔离机制,使程序可以在一个受限的环境中运行,以减少潜在的安全风险。

所以这是一个可大可小的概念,它可以是浏览器中的脚本解析器,也可以是智能手机为每个app提供的运行环境, 还可以是测试来源不明的程序的虚拟机,甚至是一台断了网的电脑,都可以被称作沙箱。

容器

容器共享宿主机的操作系统内核,但每个容器之间相互隔离。

可以理解为操作系统虚拟化,容器将应用及其依赖环境打包在一起,创建一个可以独立运行的“轻量级”虚拟系统。 通常使用 Linux 内核的命名空间和控制组等特性来实现资源隔离,因此容器的安全性依赖于宿主机的内核与具体配置。

虚拟机

软件模拟一个完整的硬件环境,每个虚拟机都有自己的操作系统。

可以理解为硬件虚拟化,软件模拟的硬件环境,可以与宿主机的硬件架构不同,因此兼容性和隔离性都更好。 但是虚拟机的资源消耗大,每次运行都需要加载整个操作系统,如果硬件架构不同,造成的开销会更大。

逆向工程

静态分析

不执行程序代码,通过查看程序反编译的汇编代码、字节码或高级语言代码来判断程序的功能和结构

IDA Pro 的基本使用

修改变量类型

搜索定位

定义结构体

Patch

编写idapython插件

其他静态分析工具

Ghidra

Ninja

Radare2

objdump

jd-gui (java)

dnspy (.Net)

jadx (android dex)

动态分析

实际运行程序,通过调试或Hook等方式,来理解目标程序的工作机制

熟练掌握其中一个或多个调试工具

IDA Pro

WinDbg

x64dbg

GDB

GDB 的基本使用

.gdbinit 的基本使用,比如自定义一个GDB命令

使用 python 开发 GDB 插件

GDB 的插件:Pwndbg / gef / peda / …

恶意文件识别(与 免杀)

恶意文件识别

特征匹配

行为分析

免杀手段

加壳/加密 + 自定义loader

运行环境检测

隐蔽通信

寄生合法软件

加壳技术的发展

源码混淆、可执行文件压缩加密,运行前解密;

内存中解密重组文件并加载执行代码段,无文件落地;

根据可执行文件的结构,仅解密函数索引,按需解密并加载执行代码段;

指令转义,通过自定义的解释器执行等效代码,也就是虚拟机壳;

漏洞分析/挖掘

漏洞复现

环境搭建

对应版本

对应功能组件与设置

触发漏洞

分析漏洞成因

开发漏洞利用

补丁对比

diff工具

bindiff

Beyond Compare

模糊测试

模糊测试的目标类型

文件格式

网络协议

脚本解析

系统调用

覆盖率导向的fuzz流程

收集语料库素材

代码插桩

源代码插桩

gcc

clang

静态二进制插桩

dyninst

动态运行时插桩

aflpin

Qemu 模拟

DynamoRIO

变异算法

随机变异

语法/模版指导变异

协议/API调用序列变异

异常捕获

异常退出

ASAN检测内存异常

覆盖率检测

afl-cov

gcov, lcov

主流Fuzz框架

AFL++

libfuzzer

honggfuzz

boofuzz

syzkaller

fuzzilli

代码审计

在对漏洞类型的理解上,结合源码或逆向工程对软件进行漏洞挖掘

代码审计思路

理解 source to sink

从数据输入/生成处开始,跟踪数据传递过程是否有逻辑错误,判断是否会流入敏感函数;

从程序中的敏感函数开始,逆向倒推数据来源是否可控,是否经过充分检查与过滤;

自动化静态代码审计框架

CodeQL

Tai-e

Fortify

FindBugs

Cppcheck


四、专业安全能力

正所谓术业有专攻,在自己的专业领域要有深度有沉淀。So many things to hack, such little time to work.

Web安全

Web 常见漏洞类型

注入漏洞

SQL注入

XXE

命令注入/代码注入

XSS

CSRF

SSRF

反序列化漏洞

任意文件上传

Web 审计

代码审计需要编程语言的基础,结合对漏洞类型的理解来进行,尽管Web后台/中间件使用了不同的语言与框架,但关注的点是共通的

http 请求中的参数获取,比如POST数据

文件操作

数据库接口

系统命令执行

Session管理

序列化与反序列化

框架配置读取/插件加载

编程语言特性,像是类继承/重载、字符串对比、include文件包含等等

二进制安全

二进制基础

除了必修其他基础每多学一个,可以增加一倍二进制能力

汇编语言(必修)

x86/x64

mips/mips64

arm/aarch64

计算机网络(重要)

操作系统(搞内核安全的基础)

数据结构、编译原理、计算机组成原理

二进制漏洞类型

栈溢出

堆溢出

整数溢出

UAF

double free

空指针引用

格式化字符串

类型混淆

二进制入门书籍推荐

《汇编语言》

《深入理解Windows操作系统》

《Windows驱动开发技术详解》

《深入理解Linux内核架构》

《CPU眼里的C/C++》

《0day安全:软件漏洞分析技术》

《漏洞战争:软件漏洞分析精要》

《Exploit编写系列教程》

Windows

Windows 开发

Windows api 官方文档

官方参考链接

Windows api hook 的原理与应用

Windows 驱动开发

Windows 内核模式驱动程序设计指南

Windows 进程间通信基础

Windows 内核驱动示例

Windows 下通信机制

通过 RPC 进行通信

通过 COM 进行通信

通过 管道 进行通信

通过 剪贴板 进行通信

Windows 分析调试

Windbg 官方文档

符号表获取

Microsoft 公共符号服务器

双机调试

常用于内核调试

Windows 漏洞缓解措施

数据执行保护 DEP

地址空间随机化 ASLR

控制流保护 CFG

管理模式执行保护 SMEP

页表随机化 PageTable Randomization

任意代码保护 ACG

返回流保护 RFG

Linux

Linux 常见漏洞缓解措施

栈保护 stack canary

禁止执行内存 NX (同 windows 中的DEP)

地址空间随机化 ASLR

位置无关可执行文件 PIE

只读重定位 RELRO

内核地址空间随机化 KASLR

内核页表隔离 KPTI

管理模式限制访问/执行 SMAP/SMEP

移动安全

关于测试机

可以找模拟器临时用,推荐有条件的还是买一个测试机(无论如何,不要用主力机搞测试!) 这里给出一些关键词,具体Root方案和环境配置要根据实际情况来

开发人员选项、USB调试、OEM解锁,adb / fastboot

刷机/获取Root:twrp、Magisk、KernelSU …

Hook工具/框架:frida、Xposed(不维护以后又出现了EdXposed、LSPosed …)

抓包相关:了解一下Android 7之后App默认不信任用户CA证书的https抓包方案

脱壳、Hook、调试工具,如何隐藏Root和Hook环境

App 安全

静态:硬编码的业务域名与API格式、用户数据存储/备份 …

动态:代码侧载(插件/热补丁) 、Content Provider/Service接口处理、deeplink注册、各种媒体解析器 …

通信:SSL证书绑定、敏感数据加解密

Android 系统的结构层次

当前的移动操作系统其实是脱胎于PC操作系统(二进制安全),很多攻击面和漏洞会相互影响,还是要根据对应的系统层次来看

应用层

App 安全

应用框架层

前端框架、系统组件、服务以及权限管理

系统运行库层

libc

媒体渲染

数据库引擎

硬件抽象层

Linux 内核层

Binder 机制

蓝牙协议栈

IoT安全

IoT安全涉及范围广泛,包括但不限于网络基础设施(如路由器和交换机)、工业控制系统、智能家居设备、无人机以及车联网等。

IoT安全研究基础

协议分析,OSI七层网络模型

嵌入式 Linux 系统方面知识

实时系统 (VxWorks / FreeRTOS等)

汇编语言 (Arm / mips / Risc-V)

交叉编译环境

JTAG 调试接口规范

IoT相关工具

Binwalk

IDA Pro

Qemu (qemu-system / qemu-user-static)

gdb / gdbserver

busybox

无线电硬件

RTL-SDR

HackRF One

BladeRF

UART 串口调试器

JTAG 硬件调试器

无线电链路协议

近距离无线通信

NFC

RFID

433/915 MHz频段遥控信号

局域无线通信

Wifi

蓝牙/低功耗蓝牙协议

ZigBee

Lora

基站通信

GSM

3G

4G/LTE

5G

卫星通信

GPS 定位

卫星电视

通讯协议

工控协议

S7Common

Modbus

无人机相关

MAVLink

车联网相关

DSRC

LTE-V2X

云服务通信协议

MQTT/MQTTX

CoAP

硬件安全

安全启动与完整性保护

硬件调试接口

flash 加密

硬件逆向工程

处理器架构漏洞

硬件侧信道问题

浏览器安全

当前常见浏览器内核

Chrome

Chromium/Blink内核

v8引擎

Safari

WebKit内核

JavaScriptCore

Firefox

Gecko内核

SpiderMonkey

Internet Explorer (已弃用)

Trident内核

Chakra

浏览器漏洞分类

解析器漏洞

DOM 漏洞

JS 引擎漏洞 (包括WASM)

同源策略绕过(SOP-bypass)/通用跨站脚本 UXSS

浏览器常见漏洞缓解措施

站点隔离

系统调用限制 / 基于虚拟化的沙箱

堆隔离 Isolated heap

延迟释放 Delayed free

堆原数据保护 Heap metadata protection

跨域隔离环境 COOP/COEP

区块链安全

用户安全参考

区块链黑暗森林手册

加密资产安全解决方案

开发安全参考

Web3 项目安全实践要求

安全研究与审计

慢雾智能合约审计技能树

基于区块链的加密货币安全审计指南

AI 安全

使用 AI 为现有的网络安全项目提供辅助,这一项应该放在本技能表的“工程化能力”章节来谈

针对 AI 模型或训练过程的安全问题,可以了解一下“数据污染”、“数据后门”和“对抗性模型”等,由此引发的安全问题通常为以下三类:

模型误判

算力消耗、拒绝服务攻击

训练数据泄露

针对 AI 部署和应用构建的安全问题

通过提示词注入(Prompt Injection)能够让我们绕过应用的系统提示词(System Prompt)的限制,例如

绕过 AI 对话应用的道德限制

修改 AI 翻译应用的输出结果

绕过 AI 驱动的内容审查机制

添加了更多功能的 AI 应用,提示词注入也能够使我们接触到应用中“传统安全”的那部分,例如

在线信息获取,该功能会从指定 URL 获取信息,或是启动一个爬虫

Function Call功能,能够调用预设 API 接口

Code Interpreter功能,会创建一个隔离的容器环境,通常是docker

当下 AI 行业正在向着大模型、多模态的方向发展,基于 AI 的应用也在探索着各种新的可能,这将不断带来新的安全性的问题与讨论

作为初学还是有必要从内部了解 AI 大模型的构成与运行机制,推荐读一下《这就是ChatGPT》

持续学习,保持关注 Seebug Paper AI安全


五、工程化能力

研发能力

瀑布模型

需求 -> 需求分析 -> 设计 -> 开发 -> 测试 -> 上线 -> 运维/运营

需求分析能力

给你一个需求,如何给出一个优美的执行思路——方法论

这个能力非常非常非常的关键

调试能力

只要定位出,就没有解决不了的 Bugs

肉眼看到的都是假象

一定要专业的工具与经验配合

Bugs 在哪出现,最终就在哪进行真实模拟调试

缩小范围

构建自己的测试样例

排除网络复杂未知情况

关联模块一个个排除

Python 单步调试

import pdb; pdb.set_trace()

在需要单步调试的地方加上面这句,运行程序后中断在此,然后 h 查看指令进行一步步细细调试

粗暴调试:print

敏捷思想

快速迭代

任务拆细

v1 原则:定义好 v1 的目标,快速完成 v1 为优先

习惯 WiKi 记录,利于沉淀与分享

编码环境

tmux/screen

Vim

Markdown

zsh + oh-my-zsh

fish 也值得一试

Python3

IPython

pip

venv

Django

其它Web框架 + web.py + Flask + Tornado

Golang

[Gin](gin-gonic/gin)

[Beego](astaxie/beego)

gorm(ORM)

Node.js

Ubuntu/Debian/Fedora/Kali

版本控制 + Git + GitLab

Nginx + uWSGI

让你的电脑默认操作系统就是 Mac/Linux…

前端

《JavaScript DOM 编程艺术》

了解 DOM

这同样是搞好前端安全的必要基础

jQuery

优秀的插件应该体验一遍,并做些尝试

官方文档得过一遍

D3.js

ECharts

来自百度

Google API

ZoomEye Map 组件

ZoomEye 团队自己基于开源的打造

Vue.js

国内开源的渐进式 JavaScript 框架

React

Facebook 出品的前端渲染框架

Antd 蚂蚁集体开源的前端组件库

Bootstrap

应该使用一遍

爬虫进阶

代理池

爬虫「稳定」需要

网络请求

wget/curl

urllib3/httplib2/requests

Scrapy

验证码破解

pytesser

调度

crontab 是最原生的定时调度

基于 Redis 实现的分布式调度

基于 RPyC 实现的分布式调度

Celery/Gearman 等调度框架

并发

线程池

进程内优美的并发方案

协程

进程内另一种优美的并发方案

gevent

多进程

os.fork

multiprocessing

算法

快排

二分

分词

贝叶斯

神经元

遗传算法

聚类/分类

正则表达式

调试工具

Kodos

RegexBuddy

支持多种语言

支持调试优化

http://www.regexper.com/

正则图解

https://regex101.com

regex101: build, test, and debug regex

正则表达式30分钟入门教程:http://deerchao.net/tutorials/regex/regex.htm

Python正则表达式操作指南:http://wiki.ubuntu.org.cn/Python%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%93%8D%E4%BD%9C%E6%8C%87%E5%8D%97

《精通正则表达式》

数据结构

JSON

cPickle

protobuf

数据库

Postgresql

MySQL

MongoDB

SQLite

Redis

ElasticSearch

大数据处理

Hive

Spark

ELK

ElasticSearch

Logstash

Kibana

DevOps

SSH 证书

Fabric

SaltStack

Puppet

pssh/dsh

运维进阶

运维工程师必须掌握的基础技能有哪些?

http://www.zhihu.com/question/23665108/answer/25299881

调试

pdb

gdb

windbg

logging

Sentry

strace/ltrace

lsof

性能

Python 内

timeit

cProfile

Python性能分析指南:http://www.oschina.net/translate/python-performance-analysis

Python 外

top/htop/free/iostat/vmstat/ifconfig/iftop…

持续集成

自测试

nose

Jenkins

协作

立会

微信

Slack

类似 Trello 的在线协同平台

AI 应用

让 AI 带你入门新领域

为 AI 添加新数据

RAG

Embeddings

原始模型微调 Fine-tuning

为 AI 添加新能力

在线数据获取

方法调用 function calling

代码执行环境 code interpreter

让 AI 参与自动化

数据分级分类

关键信息提取

样本数据生成

注意数据安全

设计思想

人人都是架构师:具备架构思想是一件多酷的事

实战出真知

如何设计

松耦合、紧内聚

单元与单元属性

生产者与消费者

结构

队列

LRU

分布式

存储

计算

资源考虑

CPU

内存

带宽

粗暴美学/暴力美学

大数据,先考虑 run it,然后才能知道规律在哪

“run it 优先”能快速打通整体,洞察问题

“run it 优先”能摆脱细节(繁枝末节)的束缚

“run it 优先”能快速迭代出伟大的 v1

一个字总结


六、优质资源

多关注电子工业/图灵/机械工业/人民邮电等出版社,他们有专业团队来保障每年输出优质书籍

微信读书也不贵,买一个吧

自己需要掌握鉴别好书的能力

站点

Seebug Paper:https://paper.seebug.org

Hacker News:https://hackernews.cc

先知社区:https://xz.aliyun.com/

FreeBuf:http://www.freebuf.com/

InfoQ:http://www.infoq.com/cn

Stack Overflow:http://stackoverflow.com/

GitHub:explore

深蓝阅读:http://bluereader.org/

RSS 订阅

漏洞相关

https://www.seebug.org/rss.xml

https://www.exploit-db.com/rss.xml

https://rss.packetstormsecurity.com

https://www.tenable.com/security/research/feed

http://0day.today/rss

http://seclists.org/rss/fulldisclosure.rss

https://www.zerodayinitiative.com/rss/published/

RSS 阅读器

https://feedly.com

安全平台

在线学习平台

https://pentesterlab.com

Root Me:https://www.root-me.org

CTFHub:https://www.ctfhub.com

vulhub:vulhub/vulhub

PoC 提交与学习

Seebug: https://www.seebug.org

Exploit-DB:https://www.exploit-db.com

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容