说明
关于知道创宇
知行合一 | 守正出奇
知道创宇是一家黑客文化浓厚的安全公司,愿景是让互联网更好更安全
本技能表为知道创宇安全研发工程师的技能树集合,是的,很庞大
聪明的人,会根据每个 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 下通信机制
通过 RPC 进行通信
通过 COM 进行通信
通过 管道 进行通信
通过 剪贴板 进行通信
Windows 分析调试
符号表获取
双机调试
常用于内核调试
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
…
区块链安全
用户安全参考
开发安全参考
安全研究与审计
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
支持多种语言
支持调试优化
正则图解
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
FreeBuf:http://www.freebuf.com/
InfoQ:http://www.infoq.com/cn
Stack Overflow:http://stackoverflow.com/
GitHub:explore
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://seclists.org/rss/fulldisclosure.rss
https://www.zerodayinitiative.com/rss/published/
RSS 阅读器
安全平台
在线学习平台
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