Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
3
respostas

Contribuições de Códigos Python para a Cibersegurança nos Cuidados de Saúde

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Título Completo

Contribuições de Códigos Python para a Cibersegurança nos Cuidados de Saúde

Autoria

Ricardo Costa Val do Rosário

Introdução

1. A seguir um texto inédito e idealizado pelo autor
2. A transformação digital na saúde tem elevado o uso de registros eletrônicos, telemedicina                                                                                               e dispositivos IoMT (Internet of Medical Things). 
3. Isso ampliou a superfície de ataque para cibercriminosos. 
4. Este documento explora como Python pode fortalecer a cibersegurança hospitalar,                                                                                                            apresentando códigos aplicáveis e fluxograma acadêmico.
# 1. Ameaças e Desafio
1. Ransomware: Criptografia de dados críticos e exigência de resgate.
2. Phishing: Fraudes que visam roubo de credenciais.
3. Ameaças internas: Uso indevido de acessos legítimos.
4. Dispositivos IoMT inseguros: Firmware desatualizado e senhas fracas.

2. Python na Cibersegurança

1. Python oferece bibliotecas como Scapy, Psutil e Flask para:
2. Monitoramento de tráfego de rede.
3. Detecção de anomalias com Machine Learning.
4. Proteção de APIs e autenticação multifator.
5. Validação de dados clínicos.

2.1 Fluxograma de Estratégias Python

[Início] → [Monitoramento Rede] → [Detecção Anomalias] → [Bloqueio Automático] → [Alertas]

3. Exemplos de Códigos Python

# 3.1 Bloqueio de Comunicação M2M Suspeita
1. Monitoramento de comunicação M2M suspeita na rede IoMT usando Scapy
2. Este script detecta tentativas de comunicação para fora da rede local e alerta o administrador

import scapy.all as scapy

def detectar_comunicacao_suspeita(packet):
    if packet.haslayer(scapy.IP):
    
        destino = packet[scapy.IP].dst
        
        if "192.168." not in destino:  
        
        # Verifica se o destino está fora da rede local
        
            print (atenção: comunicação suspeita detectada com {destino}")
            
            # Aqui poderia ser implementado bloqueio via firewall
            
            # os.system(f"iptables -A OUTPUT -d {destino} -j DROP")

print("Monitoramento iniciado. Pressione Ctrl+C para interromper.")
scapy.sniff(filter="ip", prn=detectar_comunicacao_suspeita, store=False)

Saída

import scapy.all as scapy

def detectar_comunicacao(packet):
    if packet.haslayer(scapy.IP) and "192.168." not in packet[scapy.IP].dst:
        print("Comunicação suspeita detectada")
scapy.sniff(filter="ip", prn=detectar_comunicacao)

# 3.2 Checklist de Dispositivos
1. Script para validar checklist de dispositivos médicos em análises clínicas
2. Garante que os resultados correspondem ao paciente correto

import time

def validar_checklist(dispositivo, paciente_id, checklist):
    if all(item in checklist for item in ['identidade', 'parâmetros calibrados', 'data/hora verificada']):
        print(f"Dispositivo {dispositivo}: Checklist OK para paciente {paciente_id}.")
    else:
        print(f"Alerta: Checklist incompleto no {dispositivo} para paciente {paciente_id}!")
     
    #  Aqui pode ser enviada uma notificação ao administrador
    
# 	Simulação

dispositivos = ['Microscópio eletrônico', 'Centrífuga', 'Dosador']
for d in dispositivos:
    validar_checklist(d, 'Paciente123', ['identidade', 'parâmetros calibrados', 'data/hora verificada'])
    time.sleep(1)

Saída

def validar(dispositivo, paciente, checklist):
    if all(i in checklist for i in ['identidade', 'calibração', 'data/hora']):
        print(f"{dispositivo}: OK para {paciente}")
    else:
        print(f"Alerta: Checklist incompleto em {dispositivo} para {paciente}")

# 3.3 Detector de Ransomware
1. Detector simples de ransomware com bloqueio de processos  suspeitos
2. Identifica processos que tentam sobrescrever muitos arquivos rapidamente

import psutil
import time

def detectar_ransomware():
    while True:
        for proc in psutil.process_iter(['pid', 'name', 'cpu_percent']):
            if proc.info['cpu_percent'] > 80: 
            
            # Processo usando muita CPU
     
     print(f"Alerta: Processo suspeito detectado - {proc.info['name']} (PID {proc.info['pid']})")
                
                # Bloqueio do processo (apenas com permissão do administrador)
                
                # proc.kill()
        time.sleep(5)

print("Monitoramento de ransomware iniciado...")
detectar_ransomware()

Saída

import psutil

def monitorar():
    for proc in psutil.process_iter(['name', 'cpu_percent']):
        if proc.info['cpu_percent'] > 80:
            print(f"Processo suspeito: {proc.info['name']}")
3 respostas

3.4 Bloqueio de Login Bot

1. Bloqueio de login remoto suspeito em sistema médico
2. Identifica tentativas rápidas e automatizadas (bot)

import flask
from flask import request, abort
import time

app = flask.Flask(__name__)
tentativas_login = {}

@app.route('/login', methods=['POST'])
def login():
    ip = request.remote_addr
    timestamp = time.time()
    tentativas_login.setdefault(ip, []).append(timestamp)

# Se mais de 5 tentativas em 10 segundos, bloquear

    tentativas_recent = [t for t in tentativas_login[ip] if t > timestamp - 10]
    
    if len(tentativas_recent) > 5:
    
        print(f"Alerta: Bloqueio de IP {ip} por comportamento suspeito.")
        abort(403) 
        
        # Forbidden

# Aqui seria a lógica de autenticação

# Bloqueio de login remoto suspeito em sistema médico

# Identifica tentativas rápidas e automatizadas (bot)

import flask
from flask import request, abort
import time

app = flask.Flask(__name__)
tentativas_login = {}

@app.route('/login', methods=['POST'])
def login():
    ip = request.remote_addr
    timestamp = time.time()
    tentativas_login.setdefault(ip, []).append(timestamp)

      
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)
 real
    return "Tentativa de login registrada."

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

Saída

from flask import Flask, request, abort
import time

app = Flask(__name__)
tentativas = {}

@app.route('/login', methods=['POST'])
def login():
    ip = request.remote_addr
    tentativas.setdefault(ip, []).append(time.time())
    if len([t for t in tentativas[ip] if t > time.time()-10]) > 5:
        abort(403)
    return "Login registrado"

4. Tendências Futuras

1. Zero Trust Architecture

2. Blockchain para rastreabilidade

3. AI-Driven Security

Considerações Finais

- Integrar Python à cibersegurança hospitalar é essencial para proteger:
1.  dados, 
2.  dispositivos,
3.  vidas. 

- Para ser detentor de Política robusta de Defesa contra Ameaças deve haver
comprometimento, mas também no investimento de:
1. Treinamento, 
2. Monitoramento ,
3. Backups.
solução!

Oi, Ricardo! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Sua iniciativa de explorar o uso de Python na cibersegurança hospitalar está muito interessante! Os exemplos que você trouxe mostram de forma clara como a linguagem pode contribuir com a segurança em ambientes sensíveis como o da saúde.

Uma dica interessante para o futuro é conhecer a biblioteca hashlib, que pode ser útil para verificar a integridade de arquivos, algo importante ao lidar com registros médicos. Veja este exemplo:


import hashlib

arquivo = open('dados_paciente.txt', 'rb').read()
hash_md5 = hashlib.md5(arquivo).hexdigest()

print("Hash MD5:", hash_md5)

Esse código gera um hash MD5 do conteúdo de um arquivo e pode ajudar a detectar alterações suspeitas.

Conteúdos relacionados

O link está em inglês, mas você poderá usar a tradução automática do navegador.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Alura

Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Nossa, Monalisa, que dica sensacional você me deu! Já comecei a leitura e é impossível não dizer o quanto acho vocês incríveis.
Minha admiração por todos só aumenta, dia após dia.
Abraços,
Ricardo.