项目:Dirtylands
这是 Dirtylands,一个基于 Cowrie + Dionaea 的项目,价值主张在于快速部署。它具备可用的命令、逼真的环境、严谨性和项目的成熟度。此外,它完全有能力通过 Telegram 上报每个事件,把恶意活动上报到相应的平台,并提供可观测性。
已翻译成 5 种语言:西班牙语、法语、英语、德语和保加利亚语。
构建、加固、防御。
我做的几乎所有事情都围绕这三个动词展开。我出身于云部署和系统管理,所以最先学会的是搭建基础设施(AWS 和 Azure 上的微服务架构、数据库、缓存、Kubernetes 编排),再用 GitHub 和 GitLab 上的 CI/CD 流水线把它自动化。
网络安全方向的专业进修把这些实践引向了 DevSecOps 思路:把安全控制放进开发周期本身,在任何东西进入生产环境之前,先做代码分析、依赖扫描和容器检查。
后来,我学会了防御自己构建的东西。
我搭建过完整的蓝队环境:基于 Wazuh 的 SIEM 及其检测规则、通过 SOAR 实现的响应自动化、OPNsense 防火墙、EDR 和 VPN,还有暴露在互联网上的蜜罐。系统管理出身在这里是一种优势:一旦清楚一台健康的机器是什么样子,就能早得多地察觉偏离常态的情况。
但真正让我着迷的,是攻击发生之后的事。
我的蜜罐每天都会收到真实的入侵尝试,每一次都会留下需要还原的痕迹:从哪里进来、执行了哪些命令、下载了什么、深入到了哪一步。为此,我依靠内存分析和 MITRE ATT&CK 框架,后者让我能按已知的战术和技术给每一步动作归类。
这些成果不会只留在实验室里:我会上报发起攻击的 IP 地址,并把恶意软件样本上传到公开的威胁情报平台,其中包括多个此前没有任何杀毒引擎收录过的二进制文件。
事实上……
聊聊成果和数字:
数据由我自己的蜜罐和实验环境累计收集,更新至 2026 年 8 月。如有兴趣,我可以详细介绍其中任何一项贡献。
这是 Dirtylands,一个基于 Cowrie + Dionaea 的项目,价值主张在于快速部署。它具备可用的命令、逼真的环境、严谨性和项目的成熟度。此外,它完全有能力通过 Telegram 上报每个事件,把恶意活动上报到相应的平台,并提供可观测性。
已翻译成 5 种语言:西班牙语、法语、英语、德语和保加利亚语。
针对 CyberDefenders.org 上“Sysinternals”实验的取证报告。用 Autopsy 和 Registry Explorer 分析的 .E01 镜像、冒充 Microsoft 的 HTTP 下载、以 SYSTEM 身份执行、从 Amcache 恢复的 SHA-1、Rozena 木马、C2 以及通过服务实现的持久化。包含证据保管链和取证结论。
针对一台感染了 Lumma Stealer 的计算机的网络流量样本(.PCAP)所做的取证报告。用 Wireshark 分析、通过 DHCP 和 Kerberos 识别主机、向 C2 发送的 HTTP 信标(beaconing)、压缩凭据的外泄,以及在 VirusTotal 上核实的五个恶意域名。包含 IoC 和证据保管链。
针对一台被 StrelaStealer 入侵的计算机的 RAM 内存转储(.dmp)所做的取证报告。用 Volatility 3 分析:孤儿进程、借助 PowerShell 的 Living off the Land 攻击链、通过 WebDAV 无文件加载 DLL、与 C2 的连接,以及向 Thunderbird 注入代码以窃取凭据。
练习 1:在 Docker 和 WSL 上用 Keycloak 搭建的 IAM 实验。涵盖 OAuth 2.0 和 OpenID Connect 流程、三种令牌的结构、PKCE、内省、轮换和撤销。包含故意引发的错误,并附上服务器的真实响应。
练习 2:基于 FastAPI 的资源服务器,依据 Keycloak 的 JWKS 验证其签发的 JWT 令牌,检查签名、签发者、受众、过期时间和角色。包含故意引发的六类失败,并附上 API 的真实响应。
练习 3:通过 LDAPS 将 Active Directory 联合到 Keycloak。域控制器运行在 Hyper-V 上,Keycloak 运行在 WSL2 内的 Docker 中。只存在于 AD 中的用户通过 OIDC 登录,这些用户的属性和组会进入令牌。包含映射器、生命周期和孤儿账户。
部署在 Azure 上的蜜罐,用 iptables 实现动态端口敲门(port knocking),并通过 Telegram 实时告警。
基于 GitLab CI/CD 的完整 DevSecOps 流水线,集成 SonarQube、GitLeaks、Snyk 和 OWASP ZAP,从头到尾分析代码的质量和安全性。流水线的状态通过 Discord 实时自动通知。
把一个此前在本地搭建的多层 Java Web 应用程序以 lift & shift 方式迁移到 AWS(IaaS)。Tomcat 服务器位于带 Auto Scaling 的 Elastic Load Balancer 之后,MariaDB、Memcached 和 RabbitMQ 作为后端服务,Route 53 提供私有 DNS,制品从 S3 部署,并用 IAM 限制访问。
用 EKS 在 AWS 上部署托管的 Kubernetes 集群,从一个新创建的账户开始。内容包括:用 IAM 用户和 MFA 加强访问安全、CloudWatch 中的账单警报、VPC 及其公有子网、节点组及其所需的角色,以及过程中实际遇到的错误。
在这个项目中,我学习 Ansible 的基本用法,完成了 Udemy 上的所有模块。此外,我还不得不应对这样一种情况:我的 EC2 机器的 .pem 密钥丢失了,我也尝试去解决它。
这个 GitHub 项目是 Udemy 课程“DevOps Beginners to Advanced”的一部分。项目内容是用 Vagrant、Nginx、Tomcat、RabbitMQ、Memcached 和 MySQL 搭建一个网站。
本项目演示如何用 AWS 服务创建 CI/CD 流水线,在 AWS Elastic Beanstalk 上管理、编译和部署 Web 应用程序,并集成 AWS CodePipeline、AWS CodeBuild 以及与 AWS RDS 数据库的连接。此外,项目使用 Bitbucket 作为源代码的 Git 仓库。
这个 GitHub 项目是 Udemy 课程“DevOps Beginners to Advanced”的一部分。我们之前的 AWS 项目部署了一个包含 Memcached、MySQL、Tomcat、RabbitMQ 和负载均衡器的多层 Web 应用。现在,我们用 ElastiCache、Amazon MQ、RDS 和 Beanstalk 等 AWS 服务把它全部重建。