Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
martian — Martian è una libreria per costruire proxy HTTP/S personalizzati. | Kitploit
Strumenti/GitHubGitHub/google/martian
Analisi Dinamica (Sandboxing)Proxy Web e IntercettazioneTest di Sicurezza delle APISicurezza WebPenetration TestingUtilità e FrameworkArchived
GitHubgoogle/martian

martian

Martian è una libreria per costruire proxy HTTP/S personalizzati.

Vedi Repository
2.0k25341 anno faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Martian Proxy Build Status

Martian Proxy è un proxy HTTP programmabile progettato per essere utilizzato nei test.

Martian è un ottimo strumento da usare se vuoi:

  • Verificare che tutte (o almeno alcune) le richieste siano sicure
  • Simulare servizi esterni a livello di rete
  • Iniettare header, modificare cookie o eseguire altre mutazioni di richieste e risposte HTTP
  • Verificare che i pingback avvengano quando pensi che dovrebbero
  • Decifrare il traffico crittografato (richiede l'installazione del certificato CA nel browser)

Grazie alla cross-compilazione di Go, Martian può essere distribuito ovunque Go possa essere eseguito.

Ultima Versione

v3.0.0

Requisiti

Go 1.11

Supporto Go Modules

Martian Proxy ha aggiunto il supporto per i Go modules dalla v3.0.0. Se usi una versione di Go che non supporta i moduli, questo ti causerà problemi. L'ultima versione senza supporto per i Go modules è stata taggata v2.1.0.

Per Iniziare

Installazione

Scarica lo strumento

Martian Proxy può essere installato usando go install:

root@kitploit:~
go get github.com/google/martian/ && \
go install github.com/google/martian/cmd/proxy

Avvia il Proxy

Supponendo che tu abbia installato Martian, eseguire il proxy è semplice come:

root@kitploit:~
$GOPATH/bin/proxy

Se vuoi vedere i log di sistema mentre Martian è in esecuzione, passa il flag di verbosità:

root@kitploit:~
$GOPATH/bin/proxy -v=2

Per impostazione predefinita, Martian verrà eseguito sulla porta 8080 e l'API di Martian sarà in esecuzione sulla 8181 . La porta può essere specificata tramite flag:

root@kitploit:~
$GOPATH/bin/proxy -addr=:9999 -api-addr=:9898

Registrazione dei Log

Per il logging di richieste e risposte è disponibile un modifier di logging oppure sono disponibili i log HAR se viene utilizzato il flag -har.

Log HAR

Per abilitare i log HAR in Martian, esegui il binario con il flag -har:

root@kitploit:~
$GOPATH/bin/proxy -har

Se il flag -har è stato abilitato, saranno disponibili due endpoint correlati a HAR:

root@kitploit:~
GET http://martian.proxy/logs

Recupera il log HAR di tutte le richieste e risposte viste dal proxy dall'ultimo reset.

root@kitploit:~
DELETE http://martian.proxy/logs/reset

Reimposta il log HAR in memoria. Nota che il log crescerà senza limiti a meno che non venga reimpostato periodicamente.

Configurazione

Una volta che Martian è in esecuzione, devi configurare il suo comportamento. Senza configurazione, Martian si limita a fare da proxy senza fare nulla alle richieste o alle risposte. Se abilitato, il logging avverrà senza ulteriori configurazioni.

Martian viene configurato tramite messaggi JSON inviati su HTTP che assumono la forma generale di:

root@kitploit:~
{
  "header.Modifier": {
    "scope": ["response"],
    "name": "Test-Header",
    "value": "true"
  }
}

La configurazione sopra indica a Martian di iniettare un header con il nome "Test-Header" e il valore "true" su tutte le risposte.

Analizziamo le parti di questo messaggio.

  • [package.Type]: Il package.Type del modifier che vuoi utilizzare. In questo caso, è "header.Modifier", che è il nome del modifier che imposta gli header (per saperne di più sul header.Modifier, consulta il riferimento dei modifier).

  • [package.Type].scope: Indica se applicare il modifier alle richieste, alle risposte o a entrambe. Può essere un array contenente "request", "response", o entrambi.

  • [package.Type].[key]: Dati specifici del modifier. Nel caso del modifier header, abbiamo bisogno del name e del value dell'header.

Questa è una configurazione semplice; per configurazioni più complesse, i modifier vengono combinati con gruppi e filtri per comporre il comportamento desiderato.

Per configurare Martian, fai POST del JSON a http://martian.proxy/modifiers. Dovrai usare il meccanismo che il tuo linguaggio preferito ti fornisce per effettuare richieste HTTP, ma a scopo dimostrativo, curl funziona (supponendo che la tua configurazione sia in un file chiamato modifier.json).

root@kitploit:~
    curl -x localhost:8080 \
         -X POST \
         -H "Content-Type: application/json" \
         -d @modifier.json \
            "http://martian.proxy/configure"

Intercettare Richieste e Risposte HTTPS

Martian supporta la modifica di richieste e risposte HTTPS se configurato per farlo.

Affinché Martian possa intercettare il traffico HTTPS, un certificato CA personalizzato deve essere installato nel browser in modo che gli avvisi di connessione non vengano mostrati.

Il modo più semplice per installare il certificato CA è avviare il proxy con i flag necessari per utilizzare un certificato CA personalizzato e una chiave privata usando i flag -cert e -key, oppure fare in modo che il proxy ne generi uno usando il flag -generate-ca-cert.

Dopo che il proxy è stato avviato, visita http://martian.proxy/authority.cer nel browser configurato per usare il proxy e verrà visualizzato un prompt per installare il certificato.

Diversi flag sono disponibili in examples/main.go per aiutare a configurare la funzionalità MITM:

root@kitploit:~
-key=""
  PEM encoded private key file of the CA certificate provided in -cert; used
  to sign certificates that are generated on-the-fly
-cert=""
  PEM encoded CA certificate file used to generate certificates
-generate-ca-cert=false
  generates a CA certificate and private key to use for man-in-the-middle;
  most users choosing this option will immediately visit
  http://martian.proxy/authority.cer in the browser whose traffic is to be
  intercepted to install the newly generated CA certificate
-organization="Martian Proxy"
  organization name set on the dynamically-generated certificates during
  man-in-the-middle
-validity="1h"
  window of time around the time of request that the dynamically-generated
  certificate is valid for; the duration is set such that the total valid
  timeframe is double the value of validity (1h before & 1h after)

Controllare i Verifier

Supponiamo che tu abbia configurato Martian per verificare la presenza di un header specifico nelle risposte a un URL specifico.

Ecco una configurazione per verificare che tutte le richieste a example.com restituiscano risposte con un 200 OK.

root@kitploit:~
      {
        "url.Filter": {
          "scope": ["request", "response"],
          "host" : "example.com",
          "modifier" : {
            "status.Verifier": {
              "scope" : ["response"],
              "statusCode": 200
            }
          }
        }
      }

Una volta che Martian è in esecuzione, configurato e le richieste e le risposte risultanti che desideri verificare sono avvenute, puoi verificare la tua aspettativa di aver ricevuto solo risposte 200 OK.

Per controllare le verifiche, esegui:

root@kitploit:~
GET http://martian.proxy/verify

Le aspettative non soddisfatte vengono tracciate come errori e l'elenco degli errori viene recuperato effettuando una richiesta GET a host:port/martian/verify, che restituirà un elenco di errori:

root@kitploit:~
  {
      "errors" : [
          {
              "message": "response(http://example.com) status code verify failure: got 500, want 200"
          },
          {
              "message": "response(http://example.com/foo) status code verify failure: got 500, want 200"
          }
      ]
  }

Gli errori di verifica vengono mantenuti in memoria finché non vengono esplicitamente cancellati tramite:

root@kitploit:~
POST http://martian.proxy/verify/reset

Martian come Libreria

Martian può anche essere incluso in qualsiasi programma Go e usato come libreria.

Modifier Fino in Fondo

Il sistema di modifica di richieste e risposte di Martian è progettato per essere generale ed estensibile. L'obiettivo di progettazione è fornire comportamenti di modifier individuali che possono essere combinati per realizzare quasi qualsiasi modifica desiderata.

Quando lavori con Martian per comporre comportamenti, dovrai avere familiarità con questi diversi tipi di interazione:

  • Modifiers: modificano lo stato di una richiesta o di una risposta
  • Filters: consentono condizionalmente l'esecuzione di un Modifier contenuto
  • Groups: raggruppano più modifier da eseguire nell'ordine specificato nel gruppo
  • Verifiers: tracciano il traffico di rete rispetto alle aspettative

Modifier, filtri e gruppi implementano tutti RequestModifier, ResponseModifier o RequestResponseModifier (definiti in martian.go).

root@kitploit:~
ModifyRequest(req *http.Request) error

ModifyResponse(res *http.Response) error

In tutto il codice (e in questa documentazione) vedrai la parola "modifier" usata come termine che comprende modifier, gruppi e filtri. Anche se un gruppo non modifica una richiesta o una risposta, ci riferiamo comunque a esso come a un "modifier".

Ci riferiamo a qualsiasi cosa implementi l'interfaccia modifier come a un Modifier.

Registrazione del Parser

Ogni modifier deve registrare il proprio parser con Martian. Il parser è responsabile dell'analisi di un messaggio JSON in una struct Go che implementa un'interfaccia di modifier.

Martian conserva i parser dei modifier come una mappa di stringhe verso funzioni che viene costruita al momento dell'esecuzione. Ogni modifier è responsabile della registrazione del proprio parser con una chiamata a parse.Register in init().

Firma di parse.Register:

root@kitploit:~
Register(name string, parseFunc func(b []byte) (interface{}, error))

Register accetta la chiave come stringa nella forma package.Type. Per esempio, cookie_modifier si registra con la chiave cookie.Modifier e query_string_filter si registra come querystring.Filter. Questa stringa è la stessa del valore di name nel messaggio di configurazione JSON.

Nel seguente messaggio di configurazione, header.Modifier è il modo in cui il modifier header viene registrato nell'init() di header_modifier.go.

root@kitploit:~
{
  "header.Modifier": {
    "scope": ["response"],
    "name" : "Test-Header",
    "value" : "true"
  }
}

Esempio di registrazione del parser da header_modifier.go:

root@kitploit:~
func init() {
  parse.Register("header.Modifier", modifierFromJSON)
}

func modifierFromJSON(b []byte) (interface{}, error) {
  ...
}

Aggiungere il Proprio Modifier

Se hai in mente un caso d'uso per il quale non abbiamo sviluppato modifier, filtri o verifier, puoi facilmente estendere Martian alle tue esigenze molto specifiche.

Ci sono 2 parti obbligatorie di un modifier:

  • Implementare l'interfaccia del modifier
  • Registrare il parser

Qualsiasi struct Go che implementa queste interfacce può agire come un modifier.

Contatti

Per domande e commenti su come usare Martian, annunci di funzionalità o discussioni di progettazione, dai un'occhiata al nostro Google Group pubblico su https://groups.google.com/forum/#!forum/martianproxy-users.

Per problemi relativi alla sicurezza, invia una segnalazione dettagliata al nostro gruppo core privato all'indirizzo [email protected].

Dichiarazione di non responsabilità

Questo non è un prodotto Google ufficiale (sperimentale o altro), è solo codice che risulta essere di proprietà di Google.