| Bellacosa Mainframe e o OSINT |
☕ Um Café no Bellacosa Mainframe
🎭 FRANK ABAGNALE JR. E AS SETE PISTAS QUE LEVAVAM AO MAINFRAME
OSINT, usernames, e-mails, documentos, metadados, Certificate Transparency, DNS, redes sociais, GitHub, RACF, SMF, zERT, CICS, MQ, z/OS Connect — e o dia em que um programador COBOL descobriu que ninguém precisava começar a investigação pelo mainframe.
Sob a tutela narrativa de Frank Abagnale Jr.: não confie apenas na aparência de uma informação. Observe, correlacione, confirme — e nunca confunda uma pista com uma prova.
🎬 PRÓLOGO — O HOMEM QUE NÃO PRECISAVA ENTRAR NO BANCO
O jovem programador COBOL olhou para a tela verde.
Na frente dele havia uma aplicação CICS perfeitamente normal.
TRANSACTION: PAY1
USERID: COBDEV01
PROGRAM: PAYM001
STATUS: READYEle tomou um gole de café e disse:
— Nosso mainframe está seguro. Para chegar aqui alguém precisaria conhecer o sistema.
Frank Abagnale Jr. colocou uma pasta sobre a mesa.
— Exatamente.
— Então estamos seguros.
— Não. Eu disse que alguém precisaria conhecer o sistema. Não disse que precisaria entrar nele para conhecê-lo.
Dentro da pasta havia sete folhas.
Na primeira:
LinkedInNa segunda:
GitHubNa terceira:
PDFNa quarta:
DNSNa quinta:
TLS CertificateNa sexta:
Job PostingE na última:
CICSO programador franziu a testa.
Frank sorriu.
— Você está olhando para a última página da investigação. Vamos começar pela primeira.
E é justamente aqui que começa nossa história.
🕵️ CAPÍTULO 1 — OSINT NÃO É GOOGLE COM ESTEROIDES
OSINT significa Open Source Intelligence.
A tradução mais comum é Inteligência de Fontes Abertas.
Mas existe uma diferença enorme entre informação aberta e inteligência.
Imagine encontrar na Internet:
COBOL
CICS
IBM MQ
joao.silva
empresa.com
Db2
GitHub
z/OSIsso é informação.
Agora descobrimos que:
João Silva
↓
trabalha na Empresa X
↓
publicou material sobre COBOL
↓
participou de projeto CICS
↓
empresa procura profissionais de MQ
↓
documentação pública menciona APIs
↓
outro documento menciona z/OS ConnectAgora temos relações.
Quando essas relações são verificadas e começam a revelar uma arquitetura coerente, estamos produzindo inteligência.
A fórmula é:
DADO
↓
CONTEXTO
↓
CORRELAÇÃO
↓
VALIDAÇÃO
↓
INTELIGÊNCIAEsse conceito é fundamental.
OSINT não deveria significar:
“Achei alguma coisa na Internet.”
Deveria significar:
“Encontrei informações públicas, estabeleci relações entre elas, confrontei fontes independentes e produzi uma conclusão com determinado nível de confiança.”
Para quem conhece mainframe, existe uma analogia perfeita.
Um único registro SMF pode contar uma pequena história.
Milhares de registros corretamente correlacionados podem contar a história do sistema.
🧩 CAPÍTULO 2 — A PRIMEIRA PISTA: UM USERNAME
Nos slides que deram origem à nossa investigação havia um exemplo simples:
@redhawkmeA ideia era realizar username pivoting.
Você encontra um identificador em um lugar e procura ocorrências públicas relacionadas.
No mundo mainframe precisamos acrescentar uma gigantesca placa de advertência:
USERNAME ≠ IDENTIDADEE mais importante:
USERNAME INTERNET ≠ RACF USERIDImagine:
GitHub: jsilva
Fórum: jsilva
Blog: jsilvaPodemos levantar a hipótese de que sejam a mesma pessoa.
Mas ainda não temos prova.
Muito menos podemos afirmar:
RACF USERID = JSILVAEsse é um dos erros clássicos de investigação: transformar coincidência em certeza.
Frank provavelmente perguntaria:
— O que você sabe?
“Existe uma conta chamada jsilva.”
— O que você acha?
“Talvez pertença a João Silva.”
— O que consegue provar?
E de repente temos três categorias completamente diferentes.
FATO
Existe publicamente o identificador jsilva.HIPÓTESE
Talvez pertença ao profissional João Silva.CONCLUSÃO VALIDADA
Só poderá existir depois de evidências suficientes.
Esse pequeno hábito muda completamente uma investigação.
📧 CAPÍTULO 3 — O E-MAIL QUE VIROU UM MAPA
Agora encontramos publicamente:
joao.silva@empresa.exampleParece pouca coisa.
Mas um endereço pode indicar uma convenção:
nome.sobrenome@empresaSe encontramos vários exemplos independentes:
maria.souza@
carlos.lima@
ana.pereira@podemos considerar que há evidência de um padrão de e-mail.
Mas novamente:
isso não revela automaticamente USERIDs internos.
O perigo começa quando pequenas informações são combinadas.
Um e-mail pode aparecer associado a:
documentos públicos, palestras, commits públicos, artigos técnicos, fóruns profissionais ou projetos open source.
Surge o conceito de pivot.
E-MAIL
|
+--> documento
|
+--> perfil profissional
|
+--> repositório
|
+--> conferênciaCada descoberta fornece novas possibilidades de investigação.
É uma árvore.
Curiosamente, o programador IMS talvez esteja sorrindo agora.
Porque OSINT começa a parecer um banco hierárquico.
📄 CAPÍTULO 4 — O PDF QUE FALAVA DEMAIS
Aqui encontramos uma das áreas mais fascinantes.
Documentos podem carregar informações que não fazem parte do texto principal.
São os metadados.
Um PDF poderia conter algo semelhante a:
Author: João Silva
Company: Empresa X
Created: 2026-04-12
Application: PowerPointNada disso necessariamente representa um problema.
Mas agora imagine uma apresentação técnica contendo um screenshot.
No canto da imagem aparece:
SDSFEm outro ponto:
CICSPRDMais abaixo:
DB2PE talvez:
CORP.PROD.LOADLIBAcabamos de aprender muito mais do que aparentemente estava sendo apresentado.
É aquilo que podemos chamar de architectural leakage — vazamento de contexto arquitetural.
Não precisamos encontrar:
PASSWORD=123456para que um repositório ou documento revele informação interessante.
Um simples:
//STEPLIB DD DSN=BANK.PROD.PAYMENT.LOADLIB,DISP=SHRpode revelar convenções.
Temos potencialmente:
BANK
PROD
PAYMENT
LOADLIBSeparadamente parecem palavras banais.
Juntas começam a descrever uma organização.
🧱 CAPÍTULO 5 — GITHUB: O MUSEU DAS PISTAS ESQUECIDAS
Imagine um desenvolvedor aprendendo COBOL e publicando:
IDENTIFICATION DIVISION.
PROGRAM-ID. PAYM001.Nenhum problema.
Agora imagine que seja código corporativo publicado acidentalmente.
Encontramos:
EXEC CICS LINK
PROGRAM('AUTH001')
END-EXEC.Agora conhecemos outro identificador.
Depois encontramos:
//PAYMENT EXEC PGM=PAYM001E:
MQ Queue:
PAYMENT.AUTH.REQUESTVeja o que aconteceu.
PAYM001
|
+--> AUTH001
|
+--> CICS
|
+--> PAYMENT.AUTH.REQUEST
|
+--> MQJá temos um pequeno grafo arquitetural.
Por isso segurança de repositório não deveria procurar somente senhas, tokens e API keys.
Também deveria observar exposição desnecessária de:
nomes internos, endpoints, datasets, filas MQ, programas, transações, regiões CICS, identificadores Db2 e convenções ambientais.
🔐 CAPÍTULO 6 — CERTIFICATE TRANSPARENCY: O CARTÓRIO DA INTERNET
Certificados TLS precisam identificar os serviços para os quais são válidos.
Existem mecanismos públicos de Certificate Transparency que permitem acompanhar certificados emitidos.
Um certificado poderia indicar nomes como:
www.empresa.example
api.empresa.example
developer.empresa.example
vpn.empresa.exampleIsso pode ajudar a reconstruir a superfície pública de uma organização sem realizar varredura ativa.
Agora imagine encontrar algo sugestivo como:
api.empresa.example
integration.empresa.exampleIsso não prova absolutamente nada sobre IBM Z.
Mas outra fonte pública menciona:
z/OS ConnectUma vaga menciona:
CICS + COBOL + RESTE uma apresentação corporativa fala:
API modernizationTemos então uma hipótese arquitetural:
Internet
|
v
API Gateway
|
v
Integration
|
v
z/OS Connect
|
v
CICS
|
v
COBOLRepare:
hipótese.
Não prova.
Essa palavra precisa acompanhar todo bom investigador.
🌐 CAPÍTULO 7 — “MAS O MAINFRAME NÃO ESTÁ NA INTERNET!”
Eis uma frase que Frank provavelmente adoraria ouvir.
Não porque esteja necessariamente errada.
Mas porque contém uma suposição perigosa.
O IBM Z pode realmente estar várias camadas distante da Internet.
Só que a arquitetura moderna pode ser:
INTERNET
|
v
WAF
|
v
API GATEWAY
|
v
OPENSHIFT
|
v
INTEGRATION
|
+----------+
| |
v v
MQ z/OS Connect
| |
+-----+----+
|
v
IBM Z
|
+-------+-------+
| | |
CICS IMS USS
| | |
+-------+-------+
|
COBOL / PL/I
|
+----+----+
| |
Db2 VSAMO atacante não precisa necessariamente enxergar uma tela 3270.
O cliente legítimo moderno também não enxerga.
Ele chama:
POST /paymente talvez, muitas camadas depois, um programa COBOL processe a transação.
Portanto, a pergunta de segurança madura não é:
“Meu mainframe está na Internet?”
A pergunta é:
“Quais cadeias de confiança podem chegar aos meus serviços e dados?”
Essa diferença é enorme.
🏰 CAPÍTULO 8 — RACF: O GUARDA DA FORTALEZA
Finalmente chegamos ao RACF.
O Resource Access Control Facility está no centro da segurança de muitos ambientes z/OS.
Simplificando bastante:
QUEM É VOCÊ?
↓
AUTENTICAÇÃO
O QUE VOCÊ PODE USAR?
↓
AUTORIZAÇÃO
O QUE VOCÊ FEZ?
↓
AUDITORIAEntão suponha que OSINT descubra:
PAYM001Isso não significa:
EXECUTAR PAYM001Descobrir:
PROD.PAYMENT.LOADLIBnão significa:
READ
UPDATE
ALTERDescobrir um possível USERID não significa possuir autenticação.
Essa separação precisa ficar cristalina:
CONHECIMENTO
≠
AUTORIZAÇÃOÉ aqui que a defesa em profundidade começa a mostrar seu valor.
📜 CAPÍTULO 9 — SMF: O DETETIVE QUE JÁ MORAVA NO MAINFRAME
O System Management Facilities é uma das grandes fontes de telemetria do z/OS.
Quando configurado apropriadamente, o ambiente pode registrar enorme quantidade de acontecimentos operacionais e de segurança.
Podemos pensar:
OSINT
|
| olha de fora para dentro
v
----------------------------
^
| olha de dentro para os eventos
|
SMFIsso cria uma ideia muito interessante:
External Intelligence
O que alguém pode descobrir publicamente?
Internal Telemetry
O que realmente aconteceu?
Junte os dois e temos uma visão muito mais rica.
OSINT
+
RACF
+
SMF
+
NETWORK TELEMETRY
+
SIEM
=
CONTEXTNão é uma equação matemática.
Mas é uma excelente filosofia para SOC.
📡 CAPÍTULO 10 — zERT E AS CONEXÕES QUE CONTAM HISTÓRIAS
O z/OS também possui tecnologias para fornecer visibilidade sobre características de proteção das conexões, como o z/OS Encryption Readiness Technology — zERT.
Agora nossa investigação ganha outra dimensão.
Externamente podemos acreditar que:
API
↓
Gateway
↓
MainframeInternamente queremos descobrir:
Quem comunicou?
Como comunicou?
Que proteção existia?
Qual fluxo realmente ocorreu?Essa diferença é fundamental.
OSINT reconstrói aquilo que parece existir.
Telemetria interna ajuda a demonstrar aquilo que realmente aconteceu.
🕸️ CAPÍTULO 11 — CONNECTION MAPPING: TRANSFORME PISTAS EM GRAFO
Agora chegamos à parte favorita de Frank.
Conexões.
Pare de pensar numa lista:
João
COBOL
MQ
CICS
GitHub
Empresa
APIPense em relações:
EMPRESA
|
+-------------+-------------+
| | |
PEOPLE SYSTEMS PARTNERS
| | |
GitHub API VPN
| | |
COBOL Gateway MQ
\ | /
+------------+-----------+
|
IBM Z
|
+---------+---------+
| | |
CICS IMS MQ
|
COBOL
|
+----+----+
| |
Db2 VSAMAgora estamos pensando como investigadores.
Cada nó pode possuir:
SOURCE
DATE
CONFIDENCE
STATUS
RELATIONSHIPE cada conclusão pode receber uma classificação:
CONFIRMED
PROBABLE
POSSIBLE
UNVERIFIEDIsso reduz enormemente o risco de transformar imaginação em “inteligência”.
📱 CAPÍTULO 12 — LINKEDIN E AS VAGAS QUE DESENHAM DATACENTERS
Uma organização publica uma vaga:
Mainframe Developer — COBOL, CICS, Db2, MQ, z/OS Connect, Git, Jenkins.
Ela acabou de fornecer uma boa quantidade de contexto tecnológico.
Isso não significa que revelou uma vulnerabilidade.
Essa distinção é essencial:
TECNOLOGIA CONHECIDA
≠
VULNERABILIDADEMas contexto acumulado pode melhorar a compreensão da superfície tecnológica.
Perfis profissionais fazem algo parecido.
Imagine dez funcionários.
Um menciona CICS.
Outro RACF.
Outro MQ.
Outro z/OS Connect.
Outro Db2.
Outro OpenShift.
Outro Azure.
Depois de algumas correlações podemos começar a imaginar:
Azure
|
OpenShift
|
API
|
z/OS Connect
|
CICS
|
COBOL
|
Db2Novamente:
imaginar não é confirmar.
Frank bate na mesa.
— Evidência, Padawan!
🛡️ CAPÍTULO 13 — O BLUE TEAM DEVERIA FAZER OSINT CONTRA SI MESMO
Aqui está talvez o exercício mais valioso de toda esta conversa.
Pergunte:
O que uma pessoa sem qualquer acesso interno consegue aprender sobre meu ambiente IBM Z?
Faça isso de maneira autorizada e documentada.
Procure exposição desnecessária de:
LPAR
SYSNAME
SYSID
USERID
HLQ
JOBNAME
CICS APPLID
CICS TRANSACTION
Db2 SSID
MQ Queue Manager
Queue names
Dataset names
Program names
API endpoints
Screenshots
JCL
Copybooks
Architecture diagrams
Internal hostnamesDepois classifique.
NECESSÁRIO PUBLICAMENTE
|
ACEITÁVEL PUBLICAMENTE
|
EXPOSIÇÃO DESNECESSÁRIA
|
SENSÍVEL
|
SEGREDOIsso é Attack Surface Management visto pelo lado de fora.
🔄 CAPÍTULO 14 — COLLECT, PIVOT, CORRELATE, VERIFY
Chegamos à melhor metodologia apresentada pelos slides.
1 — COLLECT
Colete informações públicas relevantes.
Sem tentar provar sua teoria antecipadamente.
2 — PIVOT
Use uma pista para localizar outras informações relacionadas.
USERNAME
↓
PROFILE
↓
COMPANY
↓
DOCUMENT3 — CORRELATE
Procure relações.
documento → CICS
vaga → COBOL
perfil → MQ
case → APITalvez exista uma arquitetura coerente.
4 — VERIFY
Procure confirmação independente.
Esse é o passo que separa investigação de imaginação.
E então o ciclo começa novamente:
COLLECT
↓
PIVOT
↓
CORRELATE
↓
VERIFY
↓
↺⚠️ CAPÍTULO 15 — FALSO POSITIVO: O INIMIGO INVISÍVEL
Encontramos:
github.com/jsilvaE:
linkedin.com/in/jsilvaMesmo nome.
Mesma profissão.
Talvez mesma cidade.
É a mesma pessoa?
Talvez.
Esse “talvez” salva investigações.
Da mesma maneira:
mainframe.empresa.examplenão prova que exista um IBM Z ativo atrás daquele hostname.
Pode ser:
um nome histórico, DNS abandonado, serviço migrado, proxy, documentação antiga ou convenção sem relação direta com infraestrutura atual.
Portanto:
CORRELAÇÃO
≠
CAUSALIDADE
IDENTIFICADOR
≠
IDENTIDADE
HOSTNAME
≠
SERVIDOR
TECNOLOGIA
≠
VULNERABILIDADE
PISTA
≠
PROVAGuarde isso.
🧪 CAPÍTULO 16 — O LABORATÓRIO BELLACOSA BANK
Vamos transformar tudo em exercício.
Criamos uma empresa fictícia:
BELLACOSA BANKO aluno recebe apenas:
bellacosabank.exampleMissão:
construir um mapa de exposição externa sem exploração intrusiva.
Ele deve procurar, no cenário simulado:
DOMAINS
CERTIFICATES
PUBLIC DOCUMENTS
CODE REPOSITORIES
JOB POSTINGS
TECHNOLOGIES
PEOPLE
PUBLIC ARCHITECTURECada descoberta precisa possuir:
SOURCE:
DATE:
EVIDENCE:
CONFIDENCE:
RELATION:
STATUS:No final:
BELLACOSA BANK
|
+------------+------------+
| | |
PEOPLE DOMAINS DOCS
| | |
GitHub TLS PDF
| | |
COBOL API CICS
\ | /
+-----------+----------+
|
HYPOTHESIS
|
IBM Z ECOSYSTEMEsse exercício ensina algo que nenhuma ferramenta consegue ensinar sozinha:
método.
💡 CAPÍTULO 17 — DEZ DICAS PARA O PADAWAN COBOL
Nunca confunda informação pública com autorização de acesso.
Registre de onde veio cada descoberta.
Coloque data na evidência. Arquiteturas mudam.
Diferencie fato, hipótese e conclusão.
Procure confirmação independente.
Não despreze documentos antigos — mas não os trate automaticamente como arquitetura atual.
Analise metadados somente dentro de contexto autorizado e legítimo.
Em revisão defensiva, procure também vazamento arquitetural, não apenas passwords.
Pense em relacionamentos, não apenas em objetos.
E a mais importante:
Não tente provar que você estava certo. Tente descobrir onde você pode estar errado.
Essa é mentalidade de investigação.
🎩 CAPÍTULO 18 — FRANK ABAGNALE E A ENGENHARIA SOCIAL
Existe ainda uma camada humana.
Um ambiente pode possuir:
RACF
MFA
TLS
Firewall
SIEM
SMF
IDS
Zero Truste ainda existir risco relacionado às pessoas e aos processos.
Por quê?
Porque tecnologia opera dentro de organizações.
Existem:
funcionários, terceiros, fornecedores, suporte, processos de recuperação, help desk, administradores e exceções operacionais.
A grande contribuição narrativa de Frank para nossa história não é “como enganar sistemas”.
É exatamente o contrário:
entender por que confiança precisa ser verificada.
Em segurança:
“ELE PARECE LEGÍTIMO”não deveria equivaler a:
“ELE ESTÁ AUTORIZADO”Esse princípio combina perfeitamente com Zero Trust:
identifique, autentique, autorize, registre e verifique continuamente conforme o contexto.
🕒 EPÍLOGO — 03:17
Às 03:17, o telefone tocou.
War Room.
O programador COBOL entrou correndo.
— Invadiram o mainframe?
Frank estava sentado olhando para um quadro cheio de linhas.
LinkedIn
|
GitHub
|
PDF
|
DNS
|
Certificate
|
API
|
Integration
|
IBM Z— Ainda não sabemos — respondeu.
— Então o que sabemos?
Frank apontou para o início do desenho.
— Sabemos que alguém não precisou começar pelo mainframe.
Silêncio.
O programador finalmente compreendeu.
Durante anos ele imaginara a segurança assim:
🏰
MAINFRAMEAgora enxergava:
INTERNET
|
+------------+------------+
| | |
PEOPLE SERVICES PARTNERS
| | |
GitHub API VPN
| | |
DevOps Gateway MQ
\ | /
+-----------+-----------+
|
TCP/IP / TLS
|
SAF / RACF
|
+------------+------------+
| | |
CICS IMS USS
| | |
+------------+------------+
|
COBOL / PL/I
|
Db2 / VSAM
|
DATAO mainframe continuava sendo a fortaleza.
Só que agora ele conseguia enxergar as estradas.
Frank fechou a pasta.
Na capa havia apenas uma frase:
“Uma pista não é uma prova. Mas sete pistas independentes apontando para o mesmo lugar merecem sua atenção.”
O jovem programador voltou ao ISPF.
Antes enxergava programas.
Depois aprendeu a enxergar sistemas.
Naquela madrugada começou a enxergar relações.
E essa talvez seja a maior transformação para qualquer profissional que queira sair do mundo exclusivamente COBOL e entrar em segurança, observabilidade, Red Team, Blue Team ou arquitetura IBM Z:
não olhe apenas para o mainframe.
Olhe para tudo que confia nele.
Olhe para tudo em que ele confia.
Olhe para quem fala sobre ele.
Olhe para os sistemas que chegam até ele.
E, principalmente, aprenda a distinguir aquilo que você encontrou, aquilo que você deduziu e aquilo que você realmente conseguiu provar.
Porque no mundo de OSINT aplicado ao mainframe, a informação mais perigosa nem sempre está escondida atrás de uma RACF password.
Às vezes ela estava pública havia cinco anos, esquecida no canto de um PDF.
Esperando alguém conectar os pontos.
☕ Bellacosa Mainframe — porque até uma fortaleza deixa pegadas.