Machine Learning aplicado à Saúde

Tarefa 1 — Preparação

Carregamento do dataset e seperação dos dados (treino e teste)

import warnings 
# Ignorar apenas FutureWarning
warnings.simplefilter(action="ignore", category=FutureWarning)

import pandas as pd
import numpy as np
import time
from sklearn.model_selection import train_test_split
# Bibliotecas dos algoritmos
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier, plot_tree
from sklearn.ensemble import RandomForestClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import silhouette_score

# Biblioteca para normalização dos dados
from sklearn.preprocessing import StandardScaler

# Bibliotecas para matriz de confusão, curca de roc, plotagem de gráficos
from sklearn.metrics import confusion_matrix, classification_report, roc_curve, roc_auc_score, accuracy_score
import matplotlib.pyplot as plt


#Carregando o dataset REAL: UCI Heart Disease (Cleveland)
url = "https://raw.githubusercontent.com/sharmaroshan/Heart-UCI-Dataset/master/heart.csv"
df_dataset = pd.read_csv(url, sep=",")

print(df_dataset.head())
print("\nDimensões:", df_dataset.shape)
print("\nDistribuição das classes (target):")
print(df_dataset["target"].value_counts())

# Separação features e alvo (Y)
X = df_dataset.drop(columns=["target"])
y = df_dataset["target"]

#Separação de treino e teste
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.3, random_state=42, stratify=y
)

#Padronizando os dados na mesma escala
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
   age  sex  cp  trestbps  chol  fbs  restecg  thalach  exang  oldpeak  slope  \
0   63    1   3       145   233    1        0      150      0      2.3      0   
1   37    1   2       130   250    0        1      187      0      3.5      0   
2   41    0   1       130   204    0        0      172      0      1.4      2   
3   56    1   1       120   236    0        1      178      0      0.8      2   
4   57    0   0       120   354    0        1      163      1      0.6      2   

   ca  thal  target  
0   0     1       1  
1   0     2       1  
2   0     2       1  
3   0     2       1  
4   0     2       1  

Dimensões: (303, 14)

Distribuição das classes (target):
target
1    165
0    138
Name: count, dtype: int64

Tarefa 2 — Treinamento dos modelos

Treinar o modelo nos algoritmos:

Data Analytics - Data Science

Análise de dados com Python

Objetivos

  1. Importar bibliotecas e carregar dataset
  2. Explorar o dataset
  3. Tratar os dados
  4. Criação de histogramas
  5. Criação de boxplots
  6. Criação de gráficos e análise
  7. Comparação de médias
  8. Criação scatterplots: Glucose × BMI e Age × BMI
  9. Treinar uma regressão logística
  10. Análise de PCA utilizando 3 parâmetros

TL;DR:
Neste projeto prático de Data Analytics com Python, explorei o dataset Pima Indians Diabetes desde a limpeza de dados e análise exploratória (EDA) até a aplicação de modelos de Machine Learning. Após tratar valores inconsistentes e criar visualizações gráficas para mapear distribuições e outliers, treinei um modelo de Regressão Logística que atingiu 79,3% de acurácia na previsão de diagnósticos. Por fim, uma análise de componentes principais (PCA), criando uma separação clara entre indivíduos saudáveis e diabéticos.

Billing

Intro

In this CTF challenge, the initial foothold was gained through a Command Injection vulnerability, which allowed for a reverse shell and, consequently, access to the server. Subsequently, privilege escalation to root was achieved by identifying and exploiting a binary with insecurely configured permissions.

Reconnaissance/Enumeration

The reconnaissance phase began with a SYN Scan on the target to identify open ports. With the list of active ports, a subsequent scan was performed to enumerate the services and their respective versions, using the Banner Grabbing technique.

Whats Your Name?

Intro

A reconnaissance of active ports was initiated, identifying the following ports: 22, 80, and 8081.
Ports 80 and 8081 have web services running, while port 8081 displays only a blank page.
Port 80 hosts a website that allows user registration, but its registration fields are vulnerable to XSS (cross-site scripting). Through this attack vector, it is possible to obtain the moderator’s session cookies.
The moderator’s panel has a subdomain with social network management functions. The system administrator can be contacted via a chatbot, which is also vulnerable to XSS attacks. Through this vulnerability, a form was crafted that does not require user interaction, allowing the administrator’s password to be changed and thereby granting administrative access.

Race Conditions

Uma race condition é uma situação em programas de computador onde o tempo dos eventos influencia o comportamento e o resultado do programa. Normalmente acontece quando uma variável é acessada e modificada por vários threads. Devido à falta de mecanismos de bloqueio adequados e sincronização entre os diferentes threads, um invasor pode abusar do sistema e aplicar um desconto várias vezes ou fazer transações de dinheiro além do seu saldo.

Injectics

A CTF focused on injection and enumeration attacks, where we first identify the field vulnerable to SQL injection. After that, we must use obfuscation techniques to bypass the verification of special characters. Once access is obtained, we need to understand the behavior of the update feature to carry out a second-order SQL attack, thereby deleting the table and triggering the default credentials registration. In the administrative panel, we should analyze which server template is in use to perform the SSTI attack.

NoSQL - Injection

NoSQL

As informações não são armazenadas em tabelasmas sim em documentos. Exemplo de banco de dados em NoSQL: MongoDB.

MongoDB

Em um banco de dados NoSQL os valores são salvos em pares: chave-valor, por exemplo, um banco de dados do departamento de RH.

{"_id" : ObjectId("5f077332de2cdf808d26cd74"), "username" : "lphillips", "first_name" : "Logan", "last_name" : "Phillips", "age" : "65", "email" : "lphillips@example.com" }

OAuth Vulnerabilities

Objetivos

  1. Conceitos essenciais sobre OAuth 2.0.
  2. O fluxo do OAuth 2.0.
  3. Identificar serviços de OAuth.
  4. Explorar técnicas.
  5. Evolução do OAuth 2.1.

A aula pode ser encontrada aqui room 0Auth Irei documentar a aula e seus exercícios propostos.

Conceitos chaves

Proprietário do recurso

O proprietário do recursos pode ser uma pessoa ou sistema, que controla um certo tipo de dado e pode autorizar uma aplicação a acessar este dado em seu nome. O conceito fundamental gira em torno do usuário, seu consentimento e controle, por exemplo, você é o proprietário do recurso como um cliente da cafeteria. Você pode controlar as informações da sua conta e conceder permissão ao aplicativo móvel da cafeteria para acessar seus dados.

Hammer

Introdução

Este CTF faz parte da trilha Web Application Pentesting. Nele, são praticados conceitos de gerenciamento de sessão, autenticação de dois fatores (2FA), força bruta, scripting e JSON Web Tokens (JWT).

Inicialmente, realizamos o reconhecimento da aplicação, suas portas e serviços. Em seguida, passamos para a enumeração da aplicação, analisando como ela se comporta no processo de recuperação de senha. Concluímos com a análise do JWT e a exposição de informações sensíveis.

Lookup

Requisitos

Neste CTF, é necessário ter conhecimentos sobre:

Reconhecimento

Para analisar a superfície de ataque, utilizaremos o Nmap para realizar uma varredura SYN Scan, usando o comando abaixo.

┌──(root㉿kali)-[/home/alex]
└─# nmap -Pn -sS 10.10.198.41  
Starting Nmap 7.95 ( https://nmap.org ) at 2025-02-01 14:42 -03
Nmap scan report for lookup.thm (10.10.198.41)
Host is up (0.33s latency).
Not shown: 998 closed tcp ports (reset)
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 5.09 seconds
                                                                                                                                                                                                                                            
┌──(root㉿kali)-[/home/alex]
└─# nmap -Pn -sS -p- --open 10.10.198.41
Starting Nmap 7.95 ( https://nmap.org ) at 2025-02-01 14:43 -03
Nmap scan report for lookup.thm (10.10.198.41)
Host is up (0.33s latency).
Not shown: 65430 closed tcp ports (reset), 103 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 110.74 seconds

Temos apenas um servidor web e a porta 22 do serviço SSH disponível.

Multi-Factor Authentication

Introdução

Multi-Factor Authentication (MFA) tem uma papel importante em aplicações modernas, adicionando uma camada extra de proteção contra ataques. MFA utiliza diferentes combinações, por exemplo:

O objetivo da aula é entender melhor, os conceitos de MFA, como também sua importância no fortalecimento da segurança. Além de explorar diferentes tipos de fatores de autenticação utilizando MFA, ao final da aula teremos um melhor entendimento sobre essa tecnologia, através de estudo em cenários práticos onde o MFA é implementado para proteger informações sensíveis.

TryHack3M - Bricks Heist

Reconhecimento

Realizado varredura de portas

──(root㉿estudos)-[/home/alex]
└─# nmap -Pn -sS --open -v 10.10.167.163     
Starting Nmap 7.95 ( https://nmap.org ) at 2025-01-27 17:25 -03
Initiating Parallel DNS resolution of 1 host. at 17:25
Completed Parallel DNS resolution of 1 host. at 17:25, 0.24s elapsed
Initiating SYN Stealth Scan at 17:25
Scanning 10.10.167.163 [1000 ports]
Discovered open port 80/tcp on 10.10.167.163
Discovered open port 443/tcp on 10.10.167.163
Discovered open port 3306/tcp on 10.10.167.163
Discovered open port 22/tcp on 10.10.167.163
Completed SYN Stealth Scan at 17:25, 2.99s elapsed (1000 total ports)
Nmap scan report for 10.10.167.163
Host is up (0.32s latency).
Not shown: 996 closed tcp ports (reset)
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
443/tcp  open  https
3306/tcp open  mysql

Read data files from: /usr/share/nmap
Nmap done: 1 IP address (1 host up) scanned in 3.50 seconds
           Raw packets sent: 1011 (44.484KB) | Rcvd: 1003 (40.136KB)
                                                                                                                                                                                                    
┌──(root㉿estudos)-[/home/alex]
└─# nmap -Pn -sV -p 22,80,443,3306 10.10.167.163
Starting Nmap 7.95 ( https://nmap.org ) at 2025-01-27 17:25 -03
Nmap scan report for 10.10.167.163
Host is up (0.31s latency).

PORT     STATE SERVICE  VERSION
22/tcp   open  ssh      OpenSSH 8.2p1 Ubuntu 4ubuntu0.11 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http     Python http.server 3.5 - 3.10
443/tcp  open  ssl/http Apache httpd
3306/tcp open  mysql    MySQL (unauthorized)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 25.53 seconds

Acessando a aplicação na porta 80, recebemos uma tela de erro, que o método GET não é permitido.

JWT - Security - THM

Objetivos

  1. Aprender sobre autenticação baseada em token.
  2. Aprender sobre JSON web tokens (JWTs).
  3. Aprender o porque JWT são populares.
  4. Aprender sobre segurança no uso de JWT.
  5. Aprender como atacar vulnerabilidade na implementação de JWT.

Introdução

Um dos motivos da popularidade das API (Application Programming Interfaces) é sua vantagem de ser usada em diversas interfaces diferentes, com uma única API podemos conversar com uma aplicação web ou mobile, simultaneamente se necessário, além disso, pensando pelo lado da segurança, podemos implementar controles mais centralizados do lado do servidor. Nesse artigo irei estudar e documentar, a aula disponível de JWT na plataforma TryHackMe.

OWASP Top 10 - THM

Introdução

Nesta aula, são ensinados os métodos para explorar cada vulnerabilidade do OWASP Top 10. Documentarei e detalharei as etapas de cada uma das vulnerabilidades mencionadas na aula.

Para acessar a aula clique aqui OWASP TOP 10

Injeção

É uma vulnerabilidade comum nas aplicações atuais. A falha ocorre porque a entrada de dados enviada pelo usuário é interpretada como comandos ou parâmetros, sem validação ou sanitização dos dados enviados. Assim, o atacante pode executar comandos arbitrários no sistema, como acessar, modificar e até mesmo deletar informações contidas no servidor. Exemplos de códigos podem ser injetados.