☕ Um Café no Bellacosa Mainframe
Gostou do conteúdo? Ajude a manter o café quente, o COBOL compilando e o mainframe acordado. 😄
☕ Pague um café ao Bellacosa

Translate

domingo, 9 de setembro de 2018

Arsène Lupin, COBOL e o Dia em que o Hacker Descobriu que Era Mais Fácil Pedir a Senha do que Quebrar o Cofre

 

Bellacosa Mainframe e o arsene lupin e as fraudes

☕ Um Café no Bellacosa Mainframe

Arsène Lupin, COBOL e o Dia em que o Hacker Descobriu que Era Mais Fácil Pedir a Senha do que Quebrar o Cofre

🎩 Engenharia Social Bancária, autenticação, autorização, Zero Trust, insiders, IA, UEBA e o estranho caso do atacante que entrou pela porta da frente usando um crachá perfeitamente válido

Imagine a cena.

Paris.

Madrugada.

Um casarão silencioso.

No segundo andar existe um cofre cercado por fechaduras, alarmes, sensores e provavelmente algum aristocrata francês convencido de que ninguém jamais conseguirá atravessar aquele sistema de proteção.

Pela janela?

Grades.

Pelo telhado?

Sensores.

Pela porta?

Dois guardas.

Pelo cofre?

Uma combinação impossível.

Arsène Lupin observa tudo isso, ajeita o monóculo imaginário e conclui:

— Que trabalho desnecessário.

Então toca a campainha.

Cinco minutos depois, o mordomo abre a porta.

Bem-vindo à engenharia social.

No mundo bancário moderno, gastamos fortunas criando sistemas capazes de impedir que pessoas não autorizadas entrem.

Firewalls.

MFA.

SIEM.

EDR.

IAM.

Criptografia.

RACF.

Monitoramento.

Segmentação.

SOC.

Machine Learning.

Zero Trust.

E tudo isso é necessário.

Mas existe um detalhe desconfortável.

O atacante nem sempre precisa quebrar a fechadura.

Às vezes ele convence alguém que possui a chave a abrir a porta.

E esse detalhe muda completamente a arquitetura de segurança.


🎭 Capítulo 1 — O ataque que chega usando gravata

Quando pensamos em “hacker”, é fácil imaginar alguém digitando freneticamente numa tela preta:

ACCESS DENIED
ACCESS DENIED
ACCESS DENIED
ACCESS GRANTED

Bonito no cinema.

Só que muitos ataques reais começam de maneira muito menos cinematográfica.

Um telefonema.

Um e-mail.

Uma mensagem.

Um chamado de suporte.

Uma solicitação urgente.

Algo como:

“Bom dia, aqui é da equipe de infraestrutura. Estamos detectando inconsistência no seu acesso. Você poderia validar a solicitação no autenticador?”

A vítima olha o celular.

Existe realmente uma notificação.

Ela aperta:

APPROVE

Pronto.

Nenhum firewall foi quebrado.

Nenhum algoritmo criptográfico foi derrotado.

Nenhum buffer overflow foi necessário.

A barreira foi atravessada utilizando algo que computadores ainda possuem dificuldade de compreender completamente:

a confiança humana.

Esse é o primeiro conceito importante:

Engenharia social não ataca apenas pessoas. Ela explora o relacionamento entre pessoas, processos, autoridade e tecnologia.

O atacante não precisa perguntar:

“Qual é sua senha?”

Pode perguntar:

“Você pode confirmar a solicitação que acabei de enviar?”

Parece uma pequena diferença.

Na segurança, é um abismo.


🧠 Capítulo 2 — O cérebro humano é também um parser

Programador COBOL iniciante, guarde esta comparação.

Seu programa recebe entrada.

ACCEPT WS-DATA.

Depois interpreta essa entrada.

Se houver uma validação insuficiente, alguma coisa inesperada pode acontecer.

O cérebro humano também recebe entradas.

Só que elas chegam assim:

voz
texto
autoridade
pressão
urgência
contexto
medo
confiança

O atacante cria uma mensagem especificamente desenhada para produzir uma resposta.

Em termos quase computacionais:

INPUT
  ↓
INTERPRETAÇÃO
  ↓
DECISÃO
  ↓
AÇÃO

Uma mensagem de phishing sofisticada funciona quase como um exploit.

O exploit técnico procura uma vulnerabilidade de software.

A engenharia social procura uma vulnerabilidade de julgamento.

Veja:

BUG TÉCNICO

entrada maliciosa
      ↓
programa interpreta
      ↓
comportamento inesperado
      ↓
acesso

Agora:

ENGENHARIA SOCIAL

informação manipulada
      ↓
humano interpreta
      ↓
decisão induzida
      ↓
acesso

A elegância quase lupiniana está justamente aí.

O ladrão não arromba o cofre.

Ele faz o dono acreditar que abrir o cofre é uma excelente ideia.


🎩 Curiosidade Lupin nº 1 — O melhor disfarce é parecer esperado

Um atacante competente raramente deseja parecer extraordinário.

Ele deseja parecer normal.

O e-mail precisa parecer corporativo.

A linguagem precisa parecer interna.

A solicitação precisa parecer razoável.

O horário precisa fazer sentido.

O nome da equipe precisa existir.

O atacante estuda a organização.

LinkedIn.

Organogramas.

Vagas publicadas.

Tecnologias anunciadas.

Nomes de departamentos.

Eventos.

Fornecedores.

Padrões de e-mail.

Projetos divulgados.

Esse processo é frequentemente chamado de reconhecimento.

E aqui nasce um pequeno paradoxo.

Quanto mais uma organização publica sobre sua própria estrutura, mais fácil pode ficar construir mensagens convincentes.

Não significa que empresas devam desaparecer da internet.

Significa que segurança também precisa considerar quais informações públicas ajudam um criminoso a representar alguém de dentro.


🏦 Capítulo 3 — O banco é diferente porque o funcionário já está dentro

Num ambiente bancário, a questão torna-se ainda mais séria.

Um invasor externo começa assim:

ATACANTE
    |
    X
PERÍMETRO

Mas um usuário interno legítimo começa assim:

FUNCIONÁRIO
    |
    V
AUTENTICAÇÃO
    |
    V
REDE
    |
    V
APLICAÇÃO

Se esse funcionário for convencido, comprometido ou tiver sua sessão sequestrada, o atacante pode aproveitar privilégios legítimos.

Isso é muito diferente de arrombar uma porta.

É roubar a identidade de alguém que já possui autorização para atravessá-la.

Imagine:

USER = FUNC001
PASSWORD = CORRECT
MFA = SUCCESS
DEVICE = CORPORATE
VPN = ACTIVE

Tudo parece perfeito.

Só que existe uma pergunta que esses controles isoladamente não respondem:

O que esse usuário está fazendo é coerente?

Essa pergunta nos conduz para uma das ideias mais importantes da segurança contemporânea.


🔐 Capítulo 4 — Autenticação não significa confiança eterna

Vamos transformar isso em COBOL mental.

Autenticação pergunta:

QUEM É VOCÊ?

Autorização pergunta:

O QUE VOCÊ PODE FAZER?

Mas segurança moderna precisa perguntar também:

FAZ SENTIDO VOCÊ FAZER ISSO AGORA?

Suponha que João trabalhe diariamente assim:

LOGIN: 08:00
LOGOUT: 17:30
DEVICE: LAPTOP-431
LOCATION: CAMPINAS
SYSTEMS: A, B, C
TRANSACTIONS/DAY: 240

Numa terça-feira:

02:53 LOGIN
DEVICE: UNKNOWN
LOCATION: UNUSUAL
SYSTEM: Z
PRIVILEGE CHANGE
EXPORT: 70000 RECORDS

A senha pode estar certa.

O MFA pode até ter sido aprovado.

A autorização pode existir.

Mas o contexto está gritando:

ALGO-ESTA-ERRADO = TRUE

☕ Capítulo 5 — O velho IF do COBOL encontra o Zero Trust

Durante muito tempo, muitos sistemas foram mentalmente construídos assim:

IF USER-AUTHENTICATED
   PERFORM ACCESS-SYSTEM
END-IF.

Mas a filosofia Zero Trust adiciona mais perguntas.

Conceitualmente:

IF USER-AUTHENTICATED
   AND DEVICE-TRUSTED
   AND LOCATION-EXPECTED
   AND BEHAVIOR-NORMAL
   AND PRIVILEGE-VALID
   AND RISK-SCORE < MAXIMUM-RISK
       PERFORM BUSINESS-TRANSACTION
ELSE
       PERFORM ADDITIONAL-VERIFICATION
END-IF.

Claro que nenhum banco implementa Zero Trust literalmente dessa maneira.

Mas como modelo mental funciona maravilhosamente.

A confiança deixa de ser:

TRUE

e passa a ser:

CONTEXTUAL
TEMPORARY
RECALCULATED

O usuário foi autenticado?

Ótimo.

Mas continua sendo observado.

O dispositivo mudou?

Reavalie.

O local mudou?

Reavalie.

O comportamento mudou?

Reavalie.

O recurso ficou mais sensível?

Reavalie.

Em outras palavras:

Autenticação não deveria ser uma coroação.

Ela deveria ser apenas mais uma evidência.


🎩 Curiosidade Lupin nº 2 — O ladrão mais perigoso pode possuir a chave verdadeira

Existe uma distinção importante entre três tipos de insider threat.

INSIDER
   |
   +--- MALICIOUS
   |
   +--- NEGLIGENT
   |
   +--- COMPROMISED

O insider malicioso possui intenção deliberada.

Ele possui acesso e decide abusar dele.

O insider negligente não deseja causar dano, mas pode violar procedimentos ou ser descuidado.

E o insider comprometido talvez seja o mais interessante.

É um funcionário completamente inocente.

Só que:

credencial roubada
sessão sequestrada
MFA aprovado indevidamente
endpoint comprometido
engenharia social

transformaram sua identidade em instrumento de ataque.

O sistema enxerga:

JOAO

Mas talvez quem esteja dirigindo seja Lupin.


🧱 Capítulo 6 — Least Privilege: não é falta de confiança, é controle de explosão

O princípio do menor privilégio costuma ser ensinado assim:

Usuários devem possuir apenas os acessos necessários.

Correto.

Mas existe uma interpretação ainda melhor.

Pergunte:

Se esta conta for comprometida amanhã, qual será o tamanho do estrago?

Esse conceito é chamado informalmente de blast radius, raio de explosão.

Imagine duas contas.

Conta A:

READ

Conta B:

READ
WRITE
DELETE
EXPORT
ADMIN
GRANT

Se ambas forem comprometidas, o impacto será muito diferente.

Menor privilégio não serve apenas para impedir abuso deliberado.

Ele serve para limitar consequências quando inevitavelmente alguma coisa der errado.

É como os compartimentos estanques de um navio.

Você não constrói compartimentos porque acredita que o casco jamais será perfurado.

Você constrói porque sabe que um dia talvez seja.


🚢 Capítulo 7 — Segurança madura não é “nunca falhar”

Esse talvez seja o maior salto conceitual desta conversa.

Organizações imaturas imaginam:

PREVENT
PREVENT
PREVENT
PREVENT

Organizações maduras pensam:

PREVENT
   ↓
DETECT
   ↓
CONTAIN
   ↓
RESPOND
   ↓
RECOVER
   ↓
LEARN

Porque pessoas erram.

Processos falham.

Softwares possuem defeitos.

Credenciais vazam.

Modelos erram.

Alertas são ignorados.

Então a pergunta deixa de ser:

Como podemos garantir que ninguém jamais erre?

E torna-se:

Quando alguém errar, quantas outras barreiras existirão antes da catástrofe?

Isso é defesa em profundidade.


📊 Capítulo 8 — SIEM: de milhares de eventos para uma história

Agora imagine o SOC de um banco.

Milhões de eventos.

LOGIN
LOGOUT
READ
WRITE
DENY
ALLOW
CREATE
DELETE
CONNECT
DISCONNECT

Sozinhos, muitos parecem normais.

Mas veja esta sequência:

02:01 LOGIN SUCCESS
02:03 MFA SUCCESS
02:05 NEW DEVICE
02:07 PRIVILEGE CHANGE
02:11 DATABASE ACCESS
02:14 MASS QUERY
02:18 LARGE EXPORT

Nenhum evento isolado necessariamente prova um ataque.

Mas juntos contam uma história.

Esse é um dos papéis do SIEM:

EVENTOS
   ↓
CENTRALIZAÇÃO
   ↓
CORRELAÇÃO
   ↓
DETECÇÃO
   ↓
ALERTA

O valor não está apenas em guardar logs.

Está em relacioná-los.


🧠 Capítulo 9 — UEBA: quando o sistema começa a observar comportamento

UEBA significa:

User and Entity Behavior Analytics.

A ideia é observar comportamento e procurar desvios.

Exemplo.

Maria geralmente:

SYSTEMS = CUSTOMER-SERVICE
HOURS = 08-18
LOCATION = OFFICE
DATA-VOLUME = LOW

De repente:

SYSTEMS = ADMIN
HOURS = 03
LOCATION = UNKNOWN
DATA-VOLUME = VERY-HIGH

Uma tecnologia de análise comportamental pode perceber:

Esse padrão não combina com Maria.

Mas cuidado.

Diferente não significa malicioso.

Maria pode ter sido convocada para um plantão.

Pode estar viajando.

Pode trabalhar numa mudança excepcional.

É justamente por isso que detecção comportamental precisa considerar contexto.

Caso contrário, o SOC sofre outra doença.


🚨 Capítulo 10 — Alert Fatigue: o alarme que toca tanto que ninguém olha

Imagine uma sala com um alarme.

Primeira vez:

BEEP!

Todo mundo corre.

Centésima vez:

BEEP!

Alguém olha.

Milésima vez:

BEEP!

— Deve ser de novo aquele sensor.

Esse fenômeno é chamado de alert fatigue.

Um SOC inundado por falsos positivos começa inevitavelmente a priorizar.

E em algum momento pode ignorar justamente o alerta importante.

Isso produz um paradoxo:

Um sistema de segurança que gera alertas demais pode diminuir a segurança.

Por isso, IA, SIEM e UEBA deveriam ajudar não a criar mais ruído, mas a aumentar a qualidade da decisão.


🤖 Capítulo 11 — E então chega a inteligência artificial

Agora o jogo fica divertido.

IA pode ajudar defensores em:

detecção de anomalias
classificação de risco
correlação de eventos
priorização
triagem
descoberta de padrões
análise de comportamento

Imagine milhões de eventos entrando.

Um humano jamais analisaria todos.

Um modelo pode tentar encontrar combinações improváveis.

DEVICE + TIME + LOCATION + PRIVILEGE + RESOURCE + VOLUME

e produzir:

RISK SCORE = 92

Então:

IF RISK-SCORE > 80
   REQUIRE STEP-UP-AUTH
   ALERT SOC
   LIMIT SESSION
END-IF

Muito elegante.

Só que aparece outra pergunta.

Quem protege a IA que está protegendo o banco?


☠️ Capítulo 12 — O guarda também pode ser enganado

Um modelo de IA depende de:

DADOS
MODELO
CONFIGURAÇÃO
REGRAS
PROMPTS
PIPELINES
PERMISSÕES

Todos esses componentes possuem superfície de ataque.

Entre os riscos estão:

  • Data Poisoning;

  • Prompt Injection;

  • manipulação de modelos;

  • vazamento de dados;

  • evasão;

  • falsos positivos;

  • falsos negativos;

  • alterações não autorizadas;

  • problemas de governança.

Imagine que o modelo aprende o que significa “normal”.

Agora imagine que o atacante consegue influenciar esse aprendizado.

Pouco a pouco:

ANOMALIA
  ↓
REPETIÇÃO
  ↓
ACEITAÇÃO
  ↓
BASELINE
  ↓
NORMAL

É quase uma normalization of deviance algorítmica.

O comportamento perigoso deixa de chamar atenção porque passou a fazer parte da referência usada pelo próprio sistema.

É Arsène Lupin treinando o guarda para reconhecê-lo como funcionário.


🎩 Easter Egg Lupin nº 1

O ladrão elegante não precisa vencer a máquina.

Ele pode vencer o conceito de normalidade da máquina.

Se o sistema pergunta:

IS THIS NORMAL?

o atacante pode tentar garantir que a resposta futura seja:

YES

Não destruindo o detector.

Mas ensinando-o lentamente.


🧠 Capítulo 13 — O perigo do “a IA disse”

Também existe outro problema.

Suponha que o modelo apresente:

FRAUD PROBABILITY = 97%

O analista inicialmente examina tudo.

Depois de 200 alertas:

— Se a IA deu 97%, bloqueia.

Isso é automation bias.

A presença de um humano no processo não garante que exista julgamento humano.

O fluxo pode virar:

AI
 ↓
HUMAN CLICKS OK
 ↓
ACTION

Formalmente:

Human in the Loop.

Na prática:

Human Rubber Stamp.

O bom HITL exige:

contexto
evidência
explicação
capacidade de contestação
tempo
procedimentos
responsabilidade

Caso contrário, acrescentamos apenas um clique humano numa decisão automatizada.


☕ Capítulo 14 — Um incidente completo, passo a passo

Vamos montar um pequeno romance policial.

08:43.

Funcionário Carlos começa o expediente.

09:17.

Recebe uma ligação.

— Carlos? Aqui é o Rafael da Segurança. Detectamos atividade anômala na sua conta.

O nome “Rafael” foi encontrado pelo atacante no LinkedIn.

09:18.

O criminoso menciona corretamente o nome de um sistema interno obtido numa vaga de emprego publicada meses antes.

Carlos fica preocupado.

09:19.

O atacante diz:

— Vou disparar uma validação.

O celular recebe MFA.

Carlos aprova.

MFA SUCCESS

09:20.

Nova sessão iniciada.

09:23.

Acesso a aplicação.

AUTH SUCCESS

09:27.

Solicitação de privilégio.

PRIVILEGE ESCALATION

09:32.

Consulta a dados sensíveis.

SENSITIVE ACCESS

09:35.

Exportação.

Uma arquitetura simples talvez enxergue:

USER AUTHENTICATED
USER AUTHORIZED

Uma arquitetura contextual enxerga:

NEW SESSION
+
MFA AFTER PHONE CALL
+
NEW RESOURCE
+
PRIVILEGE CHANGE
+
SENSITIVE QUERY
+
DATA EXPORT

E responde:

HIGH RISK

Agora vem uma decisão interessante.

Bloquear tudo?

Talvez.

Mas existem alternativas.

STEP-UP MFA
SECOND APPROVER
EXPORT LIMIT
SESSION MONITOR
SOC ALERT
TEMPORARY RESTRICTION

Isso é segurança adaptativa.


🔐 Capítulo 15 — Segurança não precisa ser sempre ALLOW ou DENY

Programadores gostam de binários.

TRUE
FALSE

Segurança moderna começa a ficar mais sofisticada.

Em vez de:

ALLOW
DENY

podemos pensar:

ALLOW
ALLOW + LOG
ALLOW + MONITOR
ALLOW + LIMIT
STEP-UP
SECOND APPROVAL
ISOLATE
DENY

O objetivo é adicionar fricção proporcional ao risco.

Transação normal?

Continue.

Transação incomum?

Peça nova confirmação.

Ação extremamente sensível?

Exija outro aprovador.

Sequência altamente suspeita?

Suspenda temporariamente.

Essa granularidade reduz dois problemas simultaneamente:

BLOQUEIO EXCESSIVO

e

CONFIANÇA EXCESSIVA

🏦 Capítulo 16 — Onde o mainframe entra nessa história?

No fundo de muitas arquiteturas bancárias pode existir:

APP
 ↓
API
 ↓
MQ
 ↓
z/OS Connect
 ↓
CICS
 ↓
COBOL
 ↓
Db2 / VSAM

Quando uma transação chega ao COBOL, ela pode parecer perfeitamente legítima.

EXEC CICS READ
END-EXEC.

O programa não sabe necessariamente que dez minutos antes alguém telefonou para o funcionário.

Para o sistema:

USER = VALID
TRANSACTION = VALID
AUTHORIZATION = VALID

Mas segurança moderna precisa correlacionar informações ao redor dessa transação.

RACF pode dizer:

Esse usuário pode acessar este recurso.

UEBA pode perguntar:

Esse usuário costuma acessar este recurso?

SIEM pode perguntar:

O que aconteceu antes?

EDR pode perguntar:

O endpoint apresenta comportamento suspeito?

IAM pode perguntar:

Como essa identidade foi autenticada?

Zero Trust pergunta:

Qual é o contexto atual?

É a soma que cria uma visão melhor.


🎩 Easter Egg Lupin nº 2 — A joia não está no cofre

Há uma metáfora interessante.

Imagine que o banco protege perfeitamente seus dados.

Mas o atacante consegue induzir um usuário autorizado a solicitar esses próprios dados.

Nesse caso, o problema não está necessariamente na proteção do cofre.

Está na legitimidade da solicitação.

É como construir o melhor cofre do mundo e depois entregar um formulário chamado:

SOLICITAÇÃO OFICIAL DE ABERTURA

Se o criminoso aprende a produzir o formulário correto, a fechadura continua sendo excelente.

Só que deixou de ser relevante.


🧩 Capítulo 17 — Pessoas + Processo + Tecnologia + Dados + Governança

Treinamento de usuários é importante.

Mas não suficiente.

Uma organização madura combina várias dimensões.

PESSOAS
+
PROCESSOS
+
TECNOLOGIA
+
DADOS
+
GOVERNANÇA

Pessoas precisam reconhecer engenharia social.

Processos precisam impedir que uma única pessoa consiga realizar ações críticas sozinha.

Tecnologia precisa detectar contexto.

Dados precisam ser confiáveis.

Governança precisa assegurar que regras, modelos e acessos sejam auditáveis.

Nenhuma camada deve ser tratada como mágica.


🛡️ Capítulo 18 — Passo a passo para pensar uma defesa

Para um programador COBOL iniciante, aqui vai um roteiro mental.

Primeiro:

Identifique a identidade.

WHO?

Depois:

Valide o privilégio.

CAN?

Depois:

Analise o contexto.

WHEN?
WHERE?
DEVICE?

Depois:

Observe o comportamento.

NORMAL?

Depois:

Avalie o recurso.

HOW SENSITIVE?

Depois:

Calcule risco.

RISK?

Depois:

Escolha resposta proporcional.

ALLOW?
STEP-UP?
LIMIT?
DENY?

Depois:

Registre tudo.

LOG

Depois:

Correlacione.

SIEM

Depois:

Aprenda.

IMPROVE CONTROLS

É quase um ciclo PDCA vestido de sobretudo francês.


🔎 Capítulo 19 — Perguntas práticas que qualquer equipe deveria fazer

Antes de pensar em comprar mais uma ferramenta, pergunte:

Se uma credencial for roubada hoje, o que o atacante consegue fazer?

Se o MFA for aprovado por engano, qual será a próxima barreira?

Se uma conta privilegiada for comprometida, existe limitação?

Mudanças de privilégio são monitoradas?

Exportações massivas chamam atenção?

Logins fora de padrão são correlacionados?

Atividades administrativas possuem dupla aprovação?

Logs críticos podem ser alterados pelo próprio administrador?

Modelos de IA possuem controle de versão?

Quem modifica thresholds?

Quem audita falsos positivos?

Quem decide que determinado comportamento é normal?

A equipe de SOC consegue explicar por que um alerta recebeu determinada prioridade?

Se a resposta para todas for:

NÃO SEI

acabamos de encontrar um excelente backlog.


🎩 Easter Egg Lupin nº 3 — O plano B do ladrão

Um bom atacante pensa:

SE A PORTA NÃO ABRIR
   USE A JANELA
SE A JANELA NÃO ABRIR
   USE O MORDOMO
SE O MORDOMO DESCONFIAR
   USE O GERENTE

Defesa em profundidade deveria pensar ao contrário:

SE O USUÁRIO ERRAR
   MFA
SE MFA FALHAR
   BEHAVIOR
SE BEHAVIOR FALHAR
   LIMIT
SE LIMIT FALHAR
   DETECT
SE DETECT FALHAR
   CONTAIN
SE CONTAIN FALHAR
   RECOVER

A segurança não depende de uma única chance.

Ela cria múltiplas oportunidades para impedir a progressão do incidente.


🧠 Capítulo 20 — O atacante moderno também possui IA

Existe outra transformação importante.

IA não pertence apenas ao defensor.

Atacantes também podem utilizá-la para:

redigir mensagens
personalizar phishing
analisar perfis públicos
traduzir
simular estilos de escrita
automatizar interações
produzir áudio sintético

Isso reduz sinais que antigamente ajudavam vítimas.

O clássico:

“Esse e-mail está escrito errado, deve ser golpe.”

fica menos confiável.

A mensagem pode estar impecável.

A voz pode parecer convincente.

A assinatura pode parecer profissional.

O novo treinamento precisa ensinar:

Credibilidade visual não equivale a legitimidade.


⚠️ Capítulo 21 — O ataque perfeito parece uma terça-feira

O ataque barulhento é mais fácil.

DELETE DATABASE

gera atenção.

O sofisticado tenta parecer rotina.

Um registro hoje.

Outro amanhã.

Uma consulta pequena.

Um privilégio utilizado discretamente.

Isso é chamado frequentemente de comportamento low-and-slow.

Em vez de:

100 GB / 10 MINUTES

pode existir:

50 MB / DAY

durante meses.

O atacante quer ficar abaixo dos thresholds.

Por isso análise de comportamento não pode considerar apenas volume.

Precisa considerar:

sequência
frequência
relação
contexto
histórico

🧙‍♂️ Capítulo 22 — O sysprog paranoico talvez tivesse razão

Veteranos costumam fazer perguntas aparentemente pessimistas:

— E se esse acesso for comprometido?

— E se o batch rodar duas vezes?

— E se alguém tiver permissão demais?

— E se o fallback falhar?

— E se o log estiver errado?

Iniciantes às vezes enxergam isso como excesso de cautela.

Mas sistemas críticos amadurecem justamente porque alguém pensou:

WHAT IF?

Segurança é a disciplina de transformar “e se?” em arquitetura.


☕ Capítulo 23 — A grande lição para quem está começando em COBOL

Você talvez entre no mainframe pensando:

Preciso aprender PIC, COMP-3, PERFORM, JCL, VSAM e Db2.

Sim.

Mas trabalhar em sistemas críticos significa aprender também que uma transação não existe isoladamente.

Por trás daquele:

EXEC SQL
    UPDATE ACCOUNT
END-EXEC

existem perguntas:

Quem chamou?

Por quê?

De onde?

Com qual identidade?

Qual privilégio?

Qual auditoria?

Qual rastreabilidade?

Existe autorização?

Existe segregação?

Existe limite?

Existe rollback?

Existe reconciliação?

Existe monitoramento?

A segurança não começa no firewall.

Ela atravessa toda a aplicação.


🎩 O último truque de Arsène Lupin

Depois de atravessar todo o casarão, Lupin chega diante do cofre.

O dono pergunta:

— Como você abriu a porta?

Lupin responde:

— Eu não abri.

— Então como entrou?

— O senhor abriu para mim.

Esse talvez seja o resumo perfeito da engenharia social.

O atacante moderno nem sempre precisa derrotar nossos controles.

Pode simplesmente encontrar uma maneira de fazer com que nós mesmos os utilizemos em benefício dele.

Por isso, uma arquitetura realmente madura não pergunta apenas:

IS USER AUTHENTICATED?

Nem apenas:

IS USER AUTHORIZED?

Pergunta também:

IS THIS BEHAVIOR EXPECTED?
IS THIS CONTEXT NORMAL?
IS THIS ACTION PROPORTIONAL?
IS THIS SESSION STILL TRUSTWORTHY?

E talvez, principalmente:

IF EVERYTHING ELSE FAILS,
HOW BAD CAN IT GET?

Essa última pergunta separa sistemas frágeis de sistemas resilientes.

Porque segurança bancária não deveria ser construída sobre a esperança de que ninguém jamais erre.

Pessoas erram.

Modelos erram.

Procedimentos falham.

Credenciais são comprometidas.

Ferramentas possuem vulnerabilidades.

Alertas são ignorados.

A verdadeira maturidade aparece quando um desses eventos deixa de significar automaticamente:

GAME OVER

e passa a significar:

CONTROL 1 FAILED
CONTROL 2 ACTIVE
CONTROL 3 MONITORING
SOC ALERTED
DAMAGE CONTAINED

Esse é o coração da defesa em profundidade.

E talvez seja também a maior lição que um programador COBOL pode levar para segurança:

IF USER-AUTHENTICATED
   CONTINUE
ELSE
   STOP RUN
END-IF

era simples demais.

O mundo atual exige algo mais parecido com:

EVALUATE TRUE

   WHEN USER-NOT-AUTHENTICATED
      PERFORM DENY-ACCESS

   WHEN PRIVILEGE-NOT-VALID
      PERFORM DENY-ACCESS

   WHEN CONTEXT-SUSPICIOUS
      PERFORM STEP-UP-VALIDATION

   WHEN BEHAVIOR-ANOMALOUS
      PERFORM SECURITY-REVIEW

   WHEN RESOURCE-CRITICAL
      PERFORM SECOND-APPROVAL

   WHEN OTHER
      PERFORM NORMAL-PROCESSING

END-EVALUATE.

E no comentário do programa talvez exista uma linha que nenhum compilador entende, mas todo profissional de segurança deveria compreender:

*> NÃO CONFUNDA IDENTIDADE VÁLIDA COM INTENÇÃO LEGÍTIMA.

Porque o futuro da segurança bancária não será determinado apenas por quem possui a melhor fechadura.

Será determinado por quem consegue perceber mais rapidamente quando alguém atravessa uma porta perfeitamente autorizado...

...mas não deveria estar entrando naquela sala.

E em algum lugar de Paris, provavelmente Arsène Lupin estaria sorrindo.

Não porque conseguiu quebrar a segurança.

Mas porque ninguém percebeu que ele nunca precisou quebrá-la.

☕ Bem-vindo ao Bellacosa Mainframe.

Onde até o ACCESS GRANTED merece ser interrogado.

sábado, 8 de setembro de 2018

🤒🔥 Infecção de Garganta — Quando o Modo Oni Era Derrubado pelo “Boss Final” da Infância

 


🤒🔥 Infecção de Garganta — Quando o Modo Oni Era Derrubado pelo “Boss Final” da Infância

Bellacosa Mainframe — Blog El Jefe Midnight Lunch

El Jefe, hoje eu volto àquele tempo em que eu, este pequeno Oni que vivia ativado em modo turbo 24x7, tinha um único ponto fraco: a bendita garganta.
Ah, meu tendão de Aquiles…
O ABEND S0C7 do meu corpo.
Aquele bug recorrente que derrubava o sistema inteiro.

Até uns 5 anos, bastava um vento torto, uma mudança de clima, um copo de água meio gelado — pronto. Iniciava o job “infecção_de_garganta.jcl” e lá ia eu pro chão. O modo Oni ficava OFF, congelado, caído no sofá feito processo em wait state, olhos murchos, voz falhando, febrezinha, mau humor e zero travessuras.

Mas junto com a doença vinha algo precioso:
atenção máxima dos meus pais.

Por causa do histórico pesado da família — meus pais perderam dois filhos antes de nós — qualquer febrezinha minha era vista como alerta vermelho nível Data Center pegando fogo.

E apesar de estar caidinho…
como era bom sentir aquele cuidado.



🍵 As comidinhas especiais da Dona Mercedes:

  • bolacha água e sal, simples e salvadora,

  • canjinha de galinha com perfume maternal nível divino,

  • caldinho de arroz que revivia até cadáver de sessão espírita,

  • chá quentinho com aquele carinho que não vem na embalagem.

Eu ficava deitado no sofá, todo murchinho, assistindo TV, vestindo aquele modo "Oni em Hibernação", só olhando a vida passar entre desenhos e programas antigos.

Mas tinha uma parte que eu temia…
A parte que vinha depois da febre, das dores, da garganta fechando…
a parte que fazia qualquer criança virar santo por três dias:

💉 A Benzetacil.



Meu amigo… isso sim era punição divina.
Minha mãe me levava ao velho e respeitado Dr. Pereira, farmacêutico raiz, daqueles que aplicavam injeção com a mesma precisão de um operador JES2 usando punch card.

A agulhada…
Ah, aquela agulhada.

Parecia que entrava em modo I/O direto no osso.
Era dor que até o Oni mais teimoso chorava.

Mas, como num passe de mágica,
no dia seguinte — pá! — o sistema rebootava perfeito.
Modo Oni ON novamente.
Voltava a correr, aprontar, subir em árvore, derrubar coisas, assustar vizinhos e tudo mais que um pequeno Bellacosa fazia para testar os limites da física.

Com o tempo, especialmente depois da mudança para Ibitinga, o ar limpo, o clima diferente e talvez uma boa ajuda do destino fizeram a garganta parar de dar problema.
Fiquei anos sem sofrer com isso.
Quase imune.

E claro, havia a preocupação da minha mãe com o tal do “latex no sangue” — ela mesma, na juventude, sofrera com a garganta e, na roça, não havia antibiótico. Resultado: complicações cardíacas quando adulta. Isso a marcou profundamente, e em casa saúde era assunto sério. Cuidado, zelo, atenção total.

Hoje, olhando pra trás, dá até um nózinho no peito lembrar desses momentos.
A doença era ruim, mas o carinho…
Ah, esse foi o patch mágico que curou a infância inteira.



E assim seguimos, El Jefe.
De garganta inflamada a Oni revivido em 24 horas,
sempre com a Dona Mercedes operando o milagre do cuidado
e o Dr. Pereira aplicando o “patch doloroso” que reiniciava o sistema.

🧡 Bons tempos de dores fortes, mas amores maiores.


quinta-feira, 6 de setembro de 2018

🕶️ FRANK FARMER E O MAINFRAME QUE PRECISAVA DE UM GUARDA-COSTAS

 

Bellacosa Mainframe aprenda a proteger seu mainframe

☕ Um Café no Bellacosa Mainframe

🕶️ FRANK FARMER E O MAINFRAME QUE PRECISAVA DE UM GUARDA-COSTAS

Nmap, Shodan, Burp Suite, Nessus, Wireshark, OSINT, RACF, SAF, SMF, zSecure, CICS, Db2, IMS, MQ, USS, APIs, Zero Trust — e o dia em que um programador COBOL descobriu que proteger o mainframe não significava ficar parado na porta do datacenter.

Sob a tutela de Frank Farmer, de O Guarda-Costas.


 



🎬 PRÓLOGO — EU NÃO PROTEJO A MÁQUINA. EU PROTEJO O CAMINHO ATÉ ELA.

O jovem programador COBOL olhou para o enorme IBM Z instalado atrás do vidro do datacenter.

Portas controladas.

Câmeras.

Crachás.

Biometria.

Seguranças.

Firewalls.

RACF.

Criptografia.

Ele sorriu.

— Frank, ninguém entra aqui.

Frank Farmer não respondeu imediatamente.

Continuou olhando para o ambiente.

Depois perguntou:

— O mainframe conversa com alguma coisa?

— Claro.

— Com o quê?

O programador começou a contar.

— Aplicativos mobile, APIs, servidores Linux, Windows, MQ, parceiros, cloud, estações dos desenvolvedores, VPN, CICS, Db2...

Frank interrompeu:

— Então existem muitas portas.

— Mas o mainframe está protegido.

Frank olhou novamente para ele.

Eu não perguntei se o mainframe estava protegido. Perguntei quantos caminhos chegam até ele.

Silêncio.

Naquele instante começaria uma das aulas mais importantes da carreira daquele jovem programador.

Porque segurança de mainframe não começa necessariamente no mainframe.

Às vezes começa em um e-mail.

Em um notebook.

Em uma API.

Em uma senha.

Em uma configuração esquecida.

Em um certificado.

Em uma biblioteca.

Ou simplesmente em alguém dizendo:

— Confia em mim.

Pegue o café.

Hoje Frank Farmer será nosso guarda-costas.



🏰 CAPÍTULO 1 — O MAINFRAME NÃO É UMA ILHA

Existe uma imagem confortável do mainframe:

          IBM Z
     ┌──────────────┐
     │              │
     │     z/OS     │
     │              │
     └──────────────┘

       INDESTRUTÍVEL

Seria maravilhoso.

Mas um ambiente empresarial moderno parece muito mais com isto:

                INTERNET
                    │
              FIREWALL / WAF
                    │
               API GATEWAY
                    │
        ┌───────────┴───────────┐
        │                       │
      CLOUD                  MOBILE
        │                       │
        └───────────┬───────────┘
                    │
                 TCP/IP
                    │
              ┌─────┴─────┐
              │   IBM Z   │
              └─────┬─────┘
                    │
     ┌──────────────┼──────────────┐
     │              │              │
   CICS            MQ         z/OS Connect
     │              │              │
   COBOL           IMS            APIs
     │
   Db2 / VSAM

Esse desenho muda completamente nossa visão de segurança.

Frank Farmer não protegeria apenas a porta do datacenter.

Ele estudaria:

quem entra, quem sai, quem conversa com quem, quais caminhos existem e quais relações de confiança foram criadas.

Essa é a primeira lição.

A superfície de ataque do mainframe pode existir muito além do próprio mainframe.



🔎 CAPÍTULO 2 — NMAP: FRANK COMEÇA CONTANDO AS PORTAS

Imagine Frank chegando a uma mansão que precisa proteger.

Antes de qualquer coisa ele pergunta:

Quantas portas?

Quantas janelas?

Existe garagem?

Entrada de serviço?

Túnel?

Portão lateral?

No mundo TCP/IP fazemos algo conceitualmente semelhante.

Ferramentas como Nmap ajudam profissionais autorizados a identificar hosts, portas e serviços.

Podemos pensar:

HOST
 │
 ├── 22   SSH
 ├── 443  HTTPS
 ├── xxxx serviço
 └── yyyy serviço

Mas aqui aparece um erro comum do iniciante.

Encontrar:

PORT 22 OPEN

não significa:

SISTEMA VULNERÁVEL

Significa:

Existe alguma coisa ouvindo aqui.

Agora começa a investigação.

Qual serviço?

Qual versão?

Quem pode conectar?

Existe TLS?

Como ocorre autenticação?

Que recurso existe atrás daquele serviço?

É produção?

Desenvolvimento?

Homologação?

Frank diria:

Uma porta não é uma invasão. É uma pergunta.



🌍 CAPÍTULO 3 — SHODAN, CENSYS E O MAINFRAME QUE DEIXOU PEGADAS

Aqui encontramos uma área fascinante: OSINT — Open Source Intelligence.

Informações públicas podem revelar muito sobre uma organização sem qualquer necessidade de acessar seus sistemas.

Imagine encontrar anúncios de emprego dizendo:

Procuramos:

COBOL
CICS
Db2
IBM MQ
RACF
z/OS Connect

Outra página diz:

Projeto de modernização CICS.

Outra:

Experiência em IBM MQ obrigatória.

Outra:

Migração de aplicações COBOL.

Separadamente são informações inocentes.

Juntas:

COBOL
  +
CICS
  +
Db2
  +
MQ
  +
z/OS Connect
  =
MAPA TECNOLÓGICO

É como encontrar pedaços de um COPYBOOK espalhados pela Internet.

Ferramentas e fontes de OSINT ajudam a correlacionar domínios, subdomínios, certificados, endereços, tecnologias e informações publicamente disponíveis.

Frank Farmer chamaria isso de:

conhecer o terreno antes que alguém mal-intencionado o conheça melhor do que você.



🕸️ CAPÍTULO 4 — O ATAQUE PODE COMEÇAR LONGE DO COBOL

Agora imagine:

Smartphone
    │
    ▼
Aplicação
    │
    ▼
API
    │
    ▼
Gateway
    │
    ▼
z/OS Connect
    │
    ▼
CICS
    │
    ▼
COBOL
    │
    ▼
Db2

Pergunta:

Onde está o mainframe?

No final.

Onde está a superfície de ataque?

Em vários pontos.

Essa distinção é importantíssima.

O programa COBOL pode estar perfeito e ainda assim existir um problema na camada web, API, autenticação, autorização ou integração.

É aí que ferramentas como Burp Suite, OWASP ZAP e soluções de teste de aplicações entram no cenário.

Não porque sejam "ferramentas COBOL".

Mas porque podem examinar componentes que levam até aplicações executadas no mainframe.


🧪 CAPÍTULO 5 — BURP SUITE NÃO SABE COBOL. E NÃO PRECISA.

Considere:

REQUEST HTTP
     │
     ▼
API
     │
     ▼
z/OS Connect
     │
     ▼
CICS
     │
     ▼
PROG01

Uma ferramenta de segurança web pode estudar o primeiro trecho desse caminho.

Mas ela não responde automaticamente:

Quem pode executar PROG01?

Quem pode alterar sua biblioteca?

Qual transação chama esse programa?

Que perfil RACF protege o recurso?

Que privilégios existem no Db2?

Que fila MQ ele acessa?

E aqui temos uma diferença essencial entre:

testar uma aplicação conectada ao mainframe

e

auditar profundamente a segurança do mainframe.

São disciplinas relacionadas.

Mas não idênticas.


🛡️ CAPÍTULO 6 — NESSUS NÃO É RACF

Scanners de vulnerabilidade podem encontrar problemas importantíssimos:

TLS obsoleto.

Certificados.

Serviços desnecessários.

Software vulnerável.

Configurações inseguras.

Versões problemáticas.

Tudo isso interessa ao Blue Team.

Mas imagine perguntar ao scanner:

Quais usuários possuem privilégios excessivos no RACF?

Silêncio.

Ou:

Existe uma biblioteca crítica inadequadamente protegida?

Silêncio novamente.

Porque agora saímos do universo de:

NETWORK VULNERABILITY

e entramos em:

MAINFRAME AUTHORIZATION

Precisamos conhecer o território nativo.


🔐 CAPÍTULO 7 — FRANK FARMER CONHECE O RACF

Para o iniciante, RACF muitas vezes parece apenas:

"Aquilo onde fica minha senha."

Não.

Isso seria como dizer que CICS serve para mostrar telas verdes.

RACF participa de um universo muito maior de controle de acesso.

Imagine:

                USER01
                   │
                   ▼
                 RACF
                   │
       ┌───────────┼───────────┐
       │           │           │
    DATASET      CICS         USS
       │           │           │
       ▼           ▼           ▼
     READ       EXECUTE       FILE
    UPDATE

Agora começamos a enxergar segurança.

Não basta perguntar:

Quem é você?

Precisamos perguntar:

O que você pode fazer?

Autenticação responde principalmente:

QUEM É VOCÊ?

Autorização responde:

O QUE VOCÊ PODE FAZER?

Frank imediatamente entenderia a diferença.

Reconhecer alguém não significa entregar-lhe todas as chaves da casa.


🚪 CAPÍTULO 8 — SAF: O SEGURANÇA QUE PERGUNTA AO PORTEIRO

Outro nome que o iniciante precisa guardar:

SAF — System Authorization Facility.

De maneira simplificada, podemos imaginar:

Aplicação/Subsistema
        │
        ▼
       SAF
        │
        ▼
 RACF / Security Manager
        │
        ▼
      PROFILE
        │
        ▼
   DECISÃO DE ACESSO

A ideia é poderosa.

Um componente precisa decidir se determinado usuário pode acessar um recurso.

Em vez de cada aplicação inventar seu próprio sistema de segurança, existe uma arquitetura integrada para solicitar essa decisão.

É quase como Frank dizendo:

— Não decida sozinho quem entra. Pergunte à segurança.


🗝️ CAPÍTULO 9 — QUEBRAR SENHA TALVEZ NEM SEJA O PROBLEMA

A imagem original mostrava ferramentas como Hashcat, John the Ripper e Hydra.

Elas pertencem ao universo de testes de credenciais e senhas em contextos autorizados.

Mas no mainframe aparece uma pergunta ainda mais interessante:

E se a credencial legítima já possuir autoridade demais?

Considere:

USER01
 │
 ├── DATASET.A  READ
 ├── DATASET.B  UPDATE
 ├── CICS       acesso
 ├── USS        acesso
 └── MQ         autoridade

Talvez ninguém precise "quebrar" nada.

O problema pode ser privilégio excessivo.

Esse é um princípio central:

Least Privilege

Cada identidade deve possuir somente as permissões necessárias para desempenhar sua função.

Nem mais.

Nem menos.


🐧 CAPÍTULO 10 — FRANK ENCONTRA UNIX DENTRO DO MAINFRAME

Então nosso programador faz uma descoberta:

$ ls
$ cd
$ grep
$ ssh

— Frank! Colocaram Linux no z/OS!

Não.

😂

Bem-vindo ao UNIX System Services — USS.

O z/OS possui um ambiente UNIX/POSIX integrado.

Isso significa que profissionais de segurança também precisam compreender conceitos como:

directories
files
permissions
processes
shell
SSH
scripts
TCP/IP

Mas existe uma diferença crítica:

USS continua vivendo dentro do ecossistema de segurança do z/OS.

Isso cria uma ponte fascinante entre:

MUNDO UNIX
     ↕
    USS
     ↕
z/OS / SAF / RACF

Para alguém estudando segurança ofensiva e defensiva, USS merece um capítulo inteiro.


📡 CAPÍTULO 11 — WI-FI NÃO PRECISA CHEGAR AO MAINFRAME

A imagem original também apresentava ferramentas de segurança wireless.

O iniciante pode perguntar:

— Meu IBM Z não está no Wi-Fi. Então isso não interessa.

Frank aponta para o notebook do operador.

E desenha:

Wi-Fi
  │
  ▼
Notebook
  │
  ▼
Credenciais
  │
  ▼
VPN
  │
  ▼
Rede corporativa
  │
  ▼
Terminal / SSH / Aplicação
  │
  ▼
IBM Z

Agora ficou interessante.

Uma organização precisa proteger cadeias, não apenas máquinas.

O atacante não necessariamente começa atacando o ativo mais forte.

Pode procurar o elo mais fraco conectado a ele.


🎭 CAPÍTULO 12 — O FIREWALL NÃO PROTEGE CONTRA "CONFIA EM MIM"

Frank Farmer sabe que pessoas também fazem parte da arquitetura.

Imagine:

Firewall        OK
RACF            OK
TLS             OK
MFA             OK
CICS            OK
SIEM            OK

Telefone toca.

— Boa tarde. Estamos resolvendo o incidente INC00317. Preciso confirmar algumas informações...

Espere.

00317?

☕ Easter egg localizado.

03:17.

O horário em que todo incidente importante do Bellacosa Mainframe parece decidir acordar. 😁

O problema agora não é buffer overflow.

É confiança.

Engenharia social procura explorar comportamentos humanos:

autoridade aparente, urgência, medo, curiosidade, confiança e vontade de ajudar.

Por isso segurança também envolve:

PROCESSOS
+
TREINAMENTO
+
SEGREGAÇÃO DE FUNÇÕES
+
APROVAÇÃO
+
VERIFICAÇÃO

Frank Farmer provavelmente resumiria:

Se alguém consegue convencer seu funcionário a abrir a porta, a resistência da fechadura deixou de ser o problema principal.


📜 CAPÍTULO 13 — SMF: A CÂMERA DE SEGURANÇA DO REINO

Agora chegamos a um dos tesouros do z/OS:

SMF — System Management Facilities

Quem trabalha com observabilidade já conhece a importância do SMF.

Na segurança ele também é extremamente relevante.

Pense nele como uma enorme fonte de evidências produzidas pelo sistema e seus componentes.

Dependendo dos registros habilitados e das aplicações envolvidas, podemos reconstruir partes importantes de:

QUEM
 │
 ▼
FEZ O QUÊ
 │
 ▼
QUANDO
 │
 ▼
ONDE
 │
 ▼
COM QUAL RESULTADO

E isso muda completamente uma investigação.


🕵️ CAPÍTULO 14 — FORENSE MAINFRAME NÃO É APENAS PROCURAR ARQUIVOS APAGADOS

No mundo distribuído, ferramentas forenses podem trabalhar com:

memória, discos, imagens, arquivos, tráfego e artefatos.

No z/OS precisamos ampliar nossa visão.

Podemos precisar correlacionar:

SMF
RACF
SYSLOG
OPERLOG
JES spool
CICS
Db2
MQ
TCP/IP
USS
SIEM

Imagine:

02:58 USER01 autentica
03:02 JOBABC inicia
03:04 recurso XYZ é acessado
03:08 programa executa
03:10 conexão externa ocorre
03:17 alerta dispara

Uma informação isolada talvez não conte nada.

Correlacionadas, elas contam uma história.

Isso é investigação.


🔍 CAPÍTULO 15 — zSECURE: FRANK GANHA UMA CENTRAL DE SEGURANÇA

Se RACF é parte fundamental do controle de acesso, precisamos também de instrumentos especializados para analisar esse universo.

Aqui aparece a família IBM zSecure.

Ela possui recursos voltados a administração, auditoria, compliance, análise e alertas de segurança no IBM Z.

O ponto importante para nosso jovem COBOLero é compreender que ferramentas tradicionais de scanner e ferramentas especializadas em z/OS enxergam problemas diferentes.

Compare:

SCANNER DE REDE

porta
TLS
serviço
versão
configuração

com:

ANÁLISE z/OS

identidades
grupos
profiles
autorizações
configurações
exposições
compliance
eventos

Um não substitui o outro.

Eles se complementam.


🧙 CAPÍTULO 16 — CARLa: QUANDO FRANK APRENDE A FAZER PERGUNTAS

Outro nome curioso:

CARLa.

Ela é utilizada no ecossistema zSecure para consulta e análise de informações de segurança.

Para o programador iniciante, podemos fazer uma analogia imperfeita, mas útil:

SQL
 ↓
consulta dados

CARLa
 ↓
consulta/analisa informações
de segurança do ambiente

Não são a mesma coisa.

A analogia serve apenas para criar o primeiro mapa mental.

Em segurança, saber formular perguntas é tão importante quanto possuir ferramentas.

Por exemplo:

Quem possui determinado privilégio?

Quais recursos possuem proteção inadequada?

Quais identidades possuem determinada autoridade?

Onde existem exceções?

O que mudou?

Essa mentalidade transforma segurança em investigação.


🧠 CAPÍTULO 17 — O PENTESTER ENCONTROU COBOL

Agora Frank acompanha um especialista que encontra:

EXEC CICS
   READ FILE('CUSTOMER')
   INTO(WS-CUSTOMER)
   RIDFLD(WS-CUSTOMER-ID)
END-EXEC.

Ele diz:

— Encontrei COBOL.

O programador mainframe responde:

— Você encontrou o começo das perguntas.

Qual transação executa esse programa?

Qual usuário?

Qual região CICS?

Qual FILE?

Quem pode acessar?

Que dataset existe por trás?

Quem pode modificar a load library?

Existe Db2 envolvido?

MQ?

Qual informação é registrada?

Percebeu?

O código não vive sozinho.

Temos:

IDENTIDADE
    │
    ▼
TRANSAÇÃO
    │
    ▼
PROGRAMA
    │
    ▼
RECURSO
    │
    ▼
DADO

E cada ligação possui implicações de segurança.


🕸️ CAPÍTULO 18 — FRANK DESENHA UM GRAFO

Aqui está talvez a ideia mais importante deste café.

Pare de pensar apenas em ferramentas.

Pense em caminhos.

Exemplo:

FUNCIONÁRIO
     │
     ▼
NOTEBOOK
     │
     ▼
VPN
     │
     ▼
USERID
     │
     ▼
RACF GROUP
     │
     ▼
DATASET
     │
     ▼
LOAD LIBRARY
     │
     ▼
PROGRAMA
     │
     ▼
CICS
     │
     ▼
Db2

Outro:

INTERNET
   │
   ▼
MOBILE
   │
   ▼
API
   │
   ▼
z/OS Connect
   │
   ▼
CICS
   │
   ▼
COBOL
   │
   ▼
MQ

Outro:

FORNECEDOR
    │
    ▼
VPN
    │
    ▼
SSH
    │
    ▼
USS
    │
    ▼
SCRIPT
    │
    ▼
JCL
    │
    ▼
BATCH

Isso é Attack Path Analysis em espírito: compreender os caminhos possíveis entre identidades, sistemas, permissões e ativos.


🔵 CAPÍTULO 19 — BLUE TEAM

O Blue Team pergunta:

Como protegemos?

No mainframe podemos pensar em camadas:

                 BLUE TEAM
                     │
        ┌────────────┼────────────┐
        ▼            ▼            ▼
      RACF          SMF         NETWORK
        │            │            │
    ACCESS        EVENTS        TCP/IP
        │            │            │
        └────────────┼────────────┘
                     ▼
                 DETECTION
                     │
                     ▼
                   SIEM

Ele trabalha para:

reduzir exposição, detectar comportamento anormal, fortalecer configurações, controlar privilégios, registrar eventos e responder a incidentes.


🔴 CAPÍTULO 20 — RED TEAM

O Red Team autorizado faz outra pergunta:

Se eu fosse um adversário, quais caminhos tentaria explorar?

Mas isso não significa sair disparando ferramentas contra produção.

Um Red Team profissional trabalha com:

ESCOPO
AUTORIZAÇÃO
REGRAS
LIMITES
EVIDÊNCIAS
SEGURANÇA OPERACIONAL
RELATÓRIO
REMEDIAÇÃO

No mainframe isso é ainda mais importante.

Você não quer descobrir que seu teste de resiliência funcionou derrubando o processamento da folha de pagamento.

😬


🟣 CAPÍTULO 21 — PURPLE TEAM

Agora Frank coloca Red e Blue na mesma sala.

RED TEAM
   │
   │ "encontrei um caminho"
   ▼
PURPLE TEAM
   ▲
   │ "vamos aprender com ele"
   │
BLUE TEAM

O objetivo não é descobrir quem é mais esperto.

É melhorar a defesa.

Red demonstra uma exposição autorizadamente.

Blue verifica se detectaria.

Ambos analisam.

A organização corrige.

Testa novamente.

Isso produz maturidade.


🏗️ CAPÍTULO 22 — PASSO A PASSO PARA O PROGRAMADOR COBOL

Se você está começando agora, não tente aprender cinquenta ferramentas simultaneamente.

Construa o conhecimento em camadas.

Passo 1 — Entenda z/OS.

Aprenda:

TSO
ISPF
JCL
datasets
JES
SDSF

Passo 2 — Entenda aplicações.

COBOL
CICS
Db2
IMS
VSAM
MQ

Passo 3 — Aprenda identidade e autorização.

SAF
RACF
USER
GROUP
PROFILE
RESOURCE
ACCESS

Passo 4 — Entre no USS.

shell
files
directories
permissions
SSH
TCP/IP

Passo 5 — Aprenda observabilidade.

SMF
RMF
logs
SYSLOG
OPERLOG
CICS logs
Db2
MQ

Passo 6 — Estude segurança externa.

OSINT
DNS
TLS
HTTP
APIs
networking
firewalls

Passo 7 — Conheça ferramentas especializadas.

zSecure
SIEM
security analytics
compliance

Somente depois comece a ligar tudo.


🧩 CAPÍTULO 23 — O EXERCÍCIO DE FRANK FARMER

Escolha uma aplicação COBOL fictícia.

Por exemplo:

PAYMENT

Agora pergunte:

Quem chama PAYMENT?

CICS transaction PAY1

Quem chama PAY1?

Talvez:

API

Quem chama a API?

Mobile Banking

Continue:

CLIENTE
   │
   ▼
MOBILE
   │
   ▼
API GATEWAY
   │
   ▼
z/OS CONNECT
   │
   ▼
CICS PAY1
   │
   ▼
COBOL PAYMENT
   │
   ├────► Db2
   │
   └────► MQ

Agora coloque segurança em cada seta.

Pergunte:

Quem autentica?

Quem autoriza?

Existe TLS?

Qual identidade chega ao CICS?

Que autorização existe?

Como o acesso ao Db2 é controlado?

Quem pode alterar PAYMENT?

Onde ficam os logs?

Que SMF é produzido?

Qual alerta seria gerado?

Pronto.

Você deixou de estudar COBOL isoladamente.

Começou a estudar segurança de sistemas empresariais.


💡 CAPÍTULO 24 — CINCO CURIOSIDADES QUE MUDAM A CABEÇA

A primeira: o atacante pode nunca ver ISPF.

Ele pode interagir somente com uma API que termina num programa COBOL.

A segunda: o código mais seguro do mundo não corrige uma autorização excessiva.

A terceira: criptografia não resolve autorização.

TLS pode proteger o caminho enquanto uma identidade perfeitamente autenticada possui permissões inadequadas.

A quarta: logs sem análise não significam detecção.

Registrar milhões de eventos não ajuda se ninguém correlacionar o que importa.

A quinta é talvez a melhor:

segurança não é produto.

Comprar uma ferramenta não instala maturidade.


🕶️ EPÍLOGO — O GUARDA-COSTAS NÃO FICAVA NA PORTA

Algumas semanas depois, o jovem programador encontrou Frank diante do mesmo vidro do datacenter.

O IBM Z continuava ali.

Imponente.

Silencioso.

Processando milhares de transações.

O programador disse:

— Agora entendi.

Frank esperou.

— Segurança do mainframe não é proteger apenas o mainframe.

Frank continuou em silêncio.

— Precisamos proteger identidades, caminhos, interfaces, aplicações, dados e relações de confiança.

Frank finalmente sorriu.

O programador apontou para o IBM Z.

— Então ele precisa de um guarda-costas.

Frank corrigiu:

— Não.

Apontou para todo o datacenter.

Depois para os notebooks.

Depois para a rede.

Depois para o smartphone sobre a mesa.

E finalmente para o programador.

Todos eles precisam.

O relógio do console marcou:

03:17:00

Nenhum ABEND.

Nenhum alerta.

Nenhuma porta misteriosamente aberta.

Dessa vez 03:17 era apenas um horário.

Frank pegou o café.

SECURITY STATUS
---------------

RACF ............ ACTIVE
SAF ............. ACTIVE
SMF ............. RECORDING
CICS ............ RUNNING
MQ .............. RUNNING
COBOL ........... STILL RUNNING

FRANK FARMER .... WATCHING

☕🕶️

E o jovem programador finalmente compreendeu a grande lição daquele café:

Em cibersegurança, a pergunta mais perigosa não é "alguém consegue invadir meu mainframe?". É "quantos caminhos de confiança levam até aquilo que realmente preciso proteger?"

Porque Nmap pode encontrar portas.

Shodan pode encontrar pegadas.

Burp pode examinar aplicações.

Scanners podem descobrir vulnerabilidades.

Wireshark pode observar pacotes.

RACF pode controlar acessos.

SMF pode preservar evidências.

zSecure pode ajudar a analisar a postura de segurança.

Mas nenhuma ferramenta substitui alguém capaz de olhar para todas essas peças e perceber que elas pertencem ao mesmo sistema.

E talvez seja justamente aí que o velho programador COBOL tenha uma vantagem inesperada.

Ele passou décadas aprendendo que um programa nunca vive sozinho.

Existe JCL.

Existe dataset.

Existe CICS.

Existe Db2.

Existe IMS.

Existe MQ.

Existe RACF.

Existe rede.

Existe gente.

E agora existe uma nova missão:

descobrir quem está protegendo quem.

Um Café no Bellacosa Mainframe

Onde até Frank Farmer descobriu que proteger Whitney Houston talvez fosse mais simples do que mapear todas as relações de confiança de uma LPAR.

quarta-feira, 5 de setembro de 2018

🥙 Churrasco Grego Paulistano: o giro sagrado do aço inox

  

🥙 Churrasco Grego Paulistano: o giro sagrado do aço inox

Por Vagner Bellacosa ☕🔥



Dizem que o churrasco grego não é grego.
E é verdade. É paulistano até o osso — ou melhor, até o espeto.

O nome vem de uma tentativa de “sofisticar” o prato lá nos anos 1970–1980, quando começaram a aparecer no centro de São Paulo aquelas máquinas verticais com espetos giratórios, lembrando o tradicional gyro da Grécia, o kebab turco e o shawarma árabe.
Mas, como toda boa invenção tupiniquim, o paulista olhou aquilo e pensou:

“Posso fazer igual, só que mais barato e com pão francês.”

E fez.




🏙️ O império das calçadas

O churrasco grego virou símbolo das avenidas do centro velho — São João, Ipiranga, Largo do Arouche, República.
Lá estão eles: o espeto vertical girando lentamente, uma resistência elétrica no topo, gordura pingando e o cheiro irresistível dominando a rua.
Por uns trocados, o freguês leva o pacote completo: carne cortada na hora, pão, vinagrete, maionese e suco de laranja com corante radioativo.

É uma refeição democrática: alimenta o trabalhador, o motoboy, o estudante, o boêmio e o curioso.
E quando bate aquela fome das 2h da manhã depois do samba, é ele quem está lá — firme, quente e confiável.
Um verdadeiro mainframe da madrugada.




🔥 Mas afinal, o que tem ali?

Originalmente, era uma mistura de carne bovina marinada com temperos simples, disposta em camadas verticais.
Com o tempo, surgiram variações: porco, frango, até soja.
O segredo está no corte fino, no giro constante e no molho que parece ter sido passado de geração em geração, como um código-fonte ancestral.
Ninguém sabe o que tem, mas todo mundo confia.


🧠 Curiosidades e folclores urbanos

  • O apelido “grego” veio de marketing de rua: “kebab” parecia difícil, “churrasco grego” soava exótico e atraía mais freguês.

  • primeiro ponto famoso teria surgido na região da Praça da República, por imigrantes do Oriente Médio.

  • Muitos carrinhos usavam chapas e motores reciclados de ventiladores ou máquinas de lavar para girar o espeto — engenharia raiz!

  • Há quem jure que o molho tem “tempero secreto” vindo da Grécia, mas é só vinagrete com orégano e fé.


☕ Bellacosa comenta

O churrasco grego é o roteador de almas famintas do centro de São Paulo.
Simples, direto e sempre online.
É o código que nunca foi documentado, mas que roda em produção há 40 anos sem downtime.
Cada fatia fininha cortada na hora carrega a essência de uma cidade que nunca dorme, nunca julga e sempre tem troco para o pão.


quinta-feira, 23 de agosto de 2018

DevOps Muito Além do Botão "Deploy"

 

Bellacosa Mainframe devops muito alem do botao deploy

☕ Um Café no Bellacosa Mainframe

DevOps Muito Além do Botão "Deploy"

O Que Todo Programador COBOL Padawan Precisa Saber Sobre CI/CD, Containers, Kubernetes, Infrastructure as Code, Pipelines, Monitoramento e Como os Grandes Bancos Automatizam Milhões de Transações por Dia

"Programar é apenas escrever código. Engenharia de Software é garantir que esse código chegue à produção com qualidade, segurança, repetibilidade e confiabilidade."


Durante muitos anos, o mundo Mainframe e o mundo Open pareciam universos completamente diferentes.

De um lado estavam os programadores COBOL, PL/I, Natural e Assembler trabalhando em ambientes IBM Z, produzindo aplicações que movimentam bancos, seguradoras, bolsas de valores, cartões de crédito, governos e empresas de telecomunicações.

Do outro lado estavam Linux, Docker, Kubernetes, Git, Jenkins, Cloud, Terraform e dezenas de ferramentas modernas que pareciam pertencer apenas às startups do Vale do Silício.

Mas existe uma verdade que poucos contam.

Os princípios são exatamente os mesmos.

O que muda são as ferramentas.

O objetivo continua sendo entregar software confiável, rapidamente, sem causar indisponibilidade.

E isso é exatamente o que os profissionais de Mainframe fazem há décadas.

Hoje vamos tomar mais um café e entender por que DevOps não substitui o Mainframe. Na verdade, ele complementa uma filosofia que o IBM Z já pratica há muito tempo.


O maior problema da Engenharia de Software

Imagine um banco em 1995.

Existem cinquenta programadores COBOL.

Cada um altera dezenas de programas durante a semana.

Na sexta-feira chega o momento mais temido.

Alguém diz:

"Vamos subir tudo para produção."

Começa então um ritual que muitos veteranos conhecem.

Primeiro é necessário localizar todos os fontes.

Depois recompilar.

Executar o Link-Edit.

Gerar os módulos de carga.

Executar o BIND dos pacotes DB2.

Atualizar CICS.

Atualizar PROCs.

Atualizar JCL.

Executar testes.

Cruzar os dedos.

Quando algo falhava, ninguém sabia exatamente qual alteração havia provocado o problema.

Esse cenário ficou conhecido no mundo da engenharia como Integration Hell.

Era caro.

Demorado.

Arriscado.

E completamente dependente de trabalho manual.

Foi exatamente para resolver esse problema que nasceu o DevOps moderno.


DevOps não é uma ferramenta

Um dos maiores erros dos iniciantes é acreditar que DevOps seja um software.

Alguns dizem:

"Estamos usando Jenkins."

Logo concluem:

"Então fazemos DevOps."

Não.

Jenkins não é DevOps.

Docker não é DevOps.

Git não é DevOps.

Kubernetes não é DevOps.

Terraform não é DevOps.

Ansible não é DevOps.

Todos eles são apenas ferramentas.

DevOps é uma filosofia de engenharia.

É uma maneira diferente de pensar.

A pergunta deixa de ser:

"Como faço o deploy?"

E passa a ser:

"Como faço milhares de deploys sem interromper o negócio?"

Essa mudança de mentalidade transforma completamente uma equipe.


A filosofia DevOps

Imagine uma corrida de revezamento.

Se um corredor correr muito rápido, mas demorar para entregar o bastão ao próximo, toda a equipe perde.

Em desenvolvimento de software acontece exatamente a mesma coisa.

Não adianta o desenvolvedor produzir código rapidamente se os testes levam semanas.

Não adianta testar rapidamente se a implantação depende de dezenas de procedimentos manuais.

Não adianta implantar rapidamente se ninguém monitora a aplicação depois.

DevOps conecta todas essas etapas em um fluxo contínuo.

É uma esteira de produção de software.


CI — Continuous Integration

A primeira etapa dessa esteira chama-se Integração Contínua.

No passado, cada desenvolvedor trabalhava isoladamente durante dias.

Quando finalmente entregava seu código, surgiam conflitos gigantescos.

Hoje a ideia é completamente diferente.

Cada pequena alteração é enviada ao repositório imediatamente.

A partir desse momento começa um processo totalmente automatizado.

O servidor baixa o código.

Compila.

Executa testes.

Analisa qualidade.

Verifica segurança.

Se tudo estiver correto, aceita a alteração.

Caso contrário, rejeita automaticamente.

Quanto menores forem as mudanças, menor será o risco de incompatibilidades.

Essa é a essência da Integração Contínua.


Como isso acontece no IBM Z

Muitos imaginam que isso exista apenas para Java ou Python.

Não existe essa limitação.

Em um ambiente IBM Z moderno, um commit pode disparar automaticamente:

  • compilação COBOL;

  • compilação PL/I;

  • compilação Assembler;

  • geração de módulos de carga;

  • execução de BIND DB2;

  • criação de artefatos;

  • testes automatizados;

  • análise de impacto;

  • geração de relatórios;

  • publicação para homologação.

Ferramentas como IBM Dependency Based Build (DBB), Jenkins e Git permitem automatizar todo esse fluxo.

O programador continua escrevendo COBOL.

O restante passa a acontecer automaticamente.


Continuous Delivery

Depois da integração vem a entrega.

Aqui existe uma diferença importante.

O software está totalmente pronto para produção.

Todos os testes passaram.

Os artefatos já foram gerados.

A documentação foi atualizada.

Os relatórios estão disponíveis.

Mas ainda existe uma aprovação humana.

Isso é muito comum em bancos.

Uma equipe de Change Management analisa a mudança.

Se aprovada, a implantação acontece.

Caso contrário, ela permanece aguardando.

Esse modelo recebe o nome de Continuous Delivery.


Continuous Deployment

Existe um passo além.

Nenhuma aprovação humana.

O commit entra no Git.

Os testes passam.

O deploy acontece automaticamente.

Empresas como Netflix, Spotify, Amazon e Google fazem isso milhares de vezes por dia.

É claro que nem toda empresa pode seguir esse modelo.

Bancos, seguradoras e órgãos governamentais normalmente exigem aprovações formais por questões regulatórias.

Mesmo assim, o restante do processo continua totalmente automatizado.


O Pipeline

Imagine uma linha de montagem de automóveis.

Cada estação realiza uma atividade específica.

Motor.

Pintura.

Suspensão.

Acabamento.

Inspeção.

Com software acontece exatamente a mesma coisa.

Essa linha de montagem recebe o nome de Pipeline.

Cada etapa agrega qualidade ao produto.

Um pipeline moderno normalmente executa:

  • obtenção do código-fonte;

  • compilação;

  • geração dos executáveis;

  • testes unitários;

  • testes de integração;

  • análise estática;

  • análise de segurança;

  • geração dos pacotes;

  • publicação;

  • deploy;

  • smoke tests;

  • monitoramento inicial.

Quanto menos intervenção humana existir, menor será a probabilidade de erro.


O papel do Git

Git não serve apenas para armazenar código.

Ele registra toda a história do projeto.

Quem alterou.

Quando alterou.

Por que alterou.

É possível retornar para qualquer versão anterior.

Essa característica transforma o Git em um verdadeiro diário da aplicação.

No mundo Mainframe, ele substitui antigas bibliotecas de controle de versões e integra naturalmente o desenvolvimento COBOL às práticas modernas.


Containers

Agora chegamos a um conceito que costuma gerar bastante confusão.

Um container não é uma máquina virtual.

Ele também não é um servidor.

Pense nele como uma caixa completamente fechada.

Dentro dessa caixa existem:

  • aplicação;

  • bibliotecas;

  • dependências;

  • arquivos de configuração;

  • variáveis de ambiente;

  • executáveis;

  • tudo o que a aplicação precisa para funcionar.

A grande vantagem é simples.

Se funciona dentro do container, funcionará em qualquer ambiente compatível.

Acabou aquela famosa frase:

"Na minha máquina funciona."


Docker

Docker foi a tecnologia que popularizou os containers.

Em vez de instalar dezenas de programas manualmente, descrevemos tudo em um arquivo chamado Dockerfile.

Esse arquivo funciona como uma receita.

Toda vez que ele é executado, produz exatamente o mesmo ambiente.

É repetível.

Auditável.

Versionável.

Esse conceito é extremamente importante na engenharia moderna.


Uma analogia para o Programador COBOL Padawan

Imagine um PROC JCL extremamente completo.

Ele já referencia todas as bibliotecas.

Possui todos os parâmetros.

Aponta para os datasets corretos.

Possui utilitários.

Define as variáveis necessárias.

Qualquer operador consegue executá-lo.

Esse PROC lembra bastante a ideia de um container.

Tudo o que é necessário já está preparado.


Kubernetes

Se containers resolvem o problema da execução, Kubernetes resolve o problema da administração.

Imagine uma empresa executando cinco mil containers.

Quem decide onde cada um será executado?

Quem reinicia um container que falhou?

Quem aumenta automaticamente a capacidade quando chegam mais usuários?

Quem reduz recursos durante a madrugada?

Quem distribui a carga entre vários servidores?

Quem realiza atualizações sem interromper o serviço?

A resposta para todas essas perguntas é Kubernetes.

Ele funciona como um maestro coordenando milhares de músicos.


Os Pods

No Kubernetes, normalmente não administramos containers diretamente.

Administramos Pods.

Um Pod pode conter um ou mais containers trabalhando em conjunto.

É a menor unidade de execução dentro do cluster.


O Control Plane

O cérebro do Kubernetes chama-se Control Plane.

Ele conhece todo o ambiente.

Sabe quais máquinas existem.

Quantos recursos possuem.

Quais aplicações estão executando.

Quais precisam ser reiniciadas.

Ele toma decisões automaticamente.


Os Worker Nodes

São os servidores que realmente executam as aplicações.

Enquanto o Control Plane decide, os Worker Nodes trabalham.

Essa separação aumenta a confiabilidade e a escalabilidade.


Healing

Imagine que um servidor apresente defeito.

No modelo tradicional alguém recebe um chamado.

Analisa logs.

Reinicia processos.

No Kubernetes tudo isso acontece automaticamente.

O sistema percebe que um container deixou de responder.

Cria outro.

Redireciona o tráfego.

O usuário muitas vezes nem percebe que ocorreu uma falha.


Auto Scaling

Durante uma promoção da Black Friday o número de acessos pode multiplicar por dez.

Kubernetes detecta esse crescimento.

Cria novas instâncias.

Distribui os usuários.

Quando a demanda diminui, remove os recursos excedentes.

Tudo automaticamente.


O equivalente no IBM Z

Embora Kubernetes seja uma tecnologia diferente, a filosofia lembra diversos recursos tradicionais do Mainframe.

O IBM Workload Manager (WLM) distribui cargas conforme prioridades.

O Parallel Sysplex compartilha processamento entre vários sistemas.

O Sysplex Distributor realiza balanceamento de carga.

A ideia continua sendo utilizar os recursos disponíveis da forma mais eficiente possível.


Infrastructure as Code

Durante décadas administradores criaram servidores manualmente.

Clicavam em dezenas de telas.

Criavam usuários.

Configuravam rede.

Firewall.

Discos.

Permissões.

Esse processo era demorado e sujeito a erros.

Hoje escrevemos infraestrutura como escrevemos software.

Esse conceito recebe o nome de Infrastructure as Code.


Terraform

Terraform tornou-se um dos maiores representantes dessa filosofia.

Em vez de clicar em interfaces gráficas, descrevemos a infraestrutura em arquivos de texto.

Esses arquivos ficam armazenados no Git.

São revisados.

Versionados.

Auditados.

Automatizados.

Se for necessário reconstruir todo o ambiente, basta executar novamente o código.


Ansible

Enquanto Terraform normalmente cria infraestrutura, Ansible costuma configurá-la.

Ele instala programas.

Atualiza configurações.

Cria usuários.

Distribui certificados.

Reinicia serviços.

Executa comandos remotamente.

No IBM Z, Ansible já é utilizado para administrar USS, CICS, MQ, Db2, RACF, z/OSMF e diversas outras tecnologias.


Configuration Management

Agora imagine mil servidores.

Todos deveriam possuir exatamente a mesma configuração.

Na prática isso quase nunca acontece quando o trabalho é manual.

Um servidor possui Java 17.

Outro possui Java 21.

Um utiliza uma biblioteca diferente.

Outro perdeu um certificado.

Esse fenômeno chama-se Configuration Drift.

Ferramentas de gerenciamento de configuração eliminam esse problema.

Elas garantem que todos os ambientes permaneçam idênticos.

Isso reduz drasticamente erros difíceis de reproduzir.


Observabilidade e Monitoramento

Muitos acreditam que o deploy encerra o trabalho.

Na verdade ele marca o início da fase mais importante.

Depois que o sistema entra em produção é necessário observar continuamente seu comportamento.

CPU.

Memória.

Latência.

Tempo de resposta.

Quantidade de erros.

Uso de disco.

Rede.

Número de usuários.

Tudo precisa ser medido.

Não se gerencia aquilo que não se mede.


Logs, Métricas e Traces

A observabilidade moderna costuma ser baseada em três pilares.

Os logs registram eventos e mensagens geradas pelas aplicações.

As métricas mostram números agregados, como uso de CPU, quantidade de requisições e tempo médio de resposta.

Os traces acompanham uma única transação atravessando diversos serviços, permitindo identificar exatamente onde ocorreu uma lentidão.

Juntos, esses três elementos fornecem uma visão muito mais completa do ambiente do que um simples monitor de CPU.


Monitoramento no IBM Z

Quem trabalha com Mainframe sabe que monitoramento não é novidade.

Ferramentas como RMF, SMF, OMEGAMON, SDSF e monitores específicos de CICS, IMS e Db2 acompanham o comportamento do sistema há décadas.

A diferença é que hoje essas informações também podem alimentar plataformas modernas de observabilidade, permitindo que aplicações distribuídas e aplicações no IBM Z sejam analisadas de forma integrada.


Segurança no Pipeline

Outra característica importante do DevOps moderno é que segurança deixou de ser uma etapa isolada.

Ela passou a fazer parte da própria esteira de desenvolvimento.

Esse movimento ficou conhecido como DevSecOps.

Durante o pipeline podem ser executadas análises de vulnerabilidades, verificação de dependências, inspeção de imagens de containers, análise estática de código e validação de políticas de conformidade.

O objetivo é detectar problemas o mais cedo possível, quando ainda são baratos de corrigir.


Cultura DevOps

Talvez este seja o conceito mais importante de todo o artigo.

Ferramentas podem ser compradas.

Servidores podem ser instalados.

Softwares podem ser atualizados.

Cultura não.

Ela precisa ser construída.

No modelo tradicional existiam silos.

O desenvolvedor escrevia o código.

A equipe de testes encontrava erros.

A equipe de operações implantava.

Quando algo dava errado começava o jogo da culpa.

DevOps rompe essa barreira.

Todos compartilham a responsabilidade pelo sucesso do produto.

Desenvolvimento, testes, segurança e operações deixam de atuar como departamentos isolados e passam a funcionar como uma única equipe.


DevOps no mundo Mainframe

Existe um mito de que Mainframe é incompatível com DevOps.

Nada poderia estar mais distante da realidade.

Hoje é perfeitamente possível integrar aplicações COBOL ao Git, automatizar compilações com Jenkins ou GitHub Actions, executar testes automatizados, versionar infraestrutura, administrar ambientes com Ansible, disponibilizar APIs por meio do z/OS Connect e monitorar tudo em tempo real.

Na prática, o IBM Z apenas incorporou ferramentas modernas a uma plataforma que sempre foi reconhecida por sua estabilidade, disponibilidade e capacidade de processamento.


O que o Programador COBOL Padawan deve aprender primeiro?

Se você está iniciando sua jornada, não tente aprender todas as ferramentas ao mesmo tempo.

Construa uma base sólida.

Comece entendendo Git e controle de versão.

Depois estude CI/CD e pipelines.

Aprenda como containers funcionam e por que eles resolveram o problema da portabilidade.

Entenda o papel do Kubernetes na orquestração.

Conheça Infrastructure as Code e Configuration Management.

Por fim, aprofunde-se em observabilidade, segurança e cultura DevOps.

As ferramentas mudam com o tempo.

Os princípios permanecem.


Conclusão

Existe uma frase muito conhecida na engenharia de software:

"Automatize tudo o que puder. Padronize tudo o que automatizar. Monitore tudo o que colocar em produção."

Ela resume perfeitamente a essência do DevOps.

Para um Programador COBOL Padawan, compreender esses conceitos não significa abandonar o Mainframe. Significa ampliar sua visão de engenharia. O COBOL continua escrevendo regras de negócio que movimentam bilhões de reais diariamente. O IBM Z continua oferecendo níveis de disponibilidade difíceis de igualar. O que muda é a forma como esse software é desenvolvido, testado, implantado, configurado e observado.

Os grandes bancos já não enxergam fronteiras entre "Mainframe" e "Open". Eles enxergam uma cadeia única de entrega de software, na qual aplicações COBOL, Java, Python, APIs REST, containers e serviços em nuvem convivem em uma arquitetura integrada. Nesse cenário, o profissional mais valorizado não é aquele que domina apenas uma linguagem, mas aquele que compreende o ciclo completo de vida do software.

Assim como um mestre Jedi conhece muito mais do que apenas o sabre de luz, um verdadeiro engenheiro de software precisa entender muito mais do que apenas escrever código. Ele precisa dominar automação, integração contínua, entrega contínua, infraestrutura como código, observabilidade, segurança e colaboração entre equipes.

No fim das contas, DevOps não é sobre Docker, Kubernetes ou Jenkins. É sobre construir sistemas que possam evoluir continuamente, com qualidade, segurança e confiança. E essa sempre foi — e continuará sendo — uma das maiores virtudes do ecossistema IBM Mainframe.


Vagner Renato Bellacosa, IBM Champion e especialista em IBM Mainframe
IBM Z17 SYSTEM ONLINE
Sobre o autor

Vagner Renato Bellacosa

IBM Champion 2026 • Especialista em IBM Mainframe

Vagner Renato Bellacosa trabalha com IBM Mainframe desde 1988 , é IBM Champion e especialista em COBOL, CICS, Db2, z/OS e IBM Z. Compartilha experiências profissionais, conhecimento técnico, história da computação e práticas do universo mainframe para aproximar novas gerações das tecnologias que sustentam empresas, bancos e governos ao redor do mundo.

IBM Champion IBM Z COBOL CICS Db2 z/OS Mainframe desde 1988
GitHub LinkedIn
Inicializando conteúdo...