Come possono i robot battere i CAPTCHA?


84

Ho un modulo e-mail per il sito web. Uso un CAPTCHA personalizzato per prevenire lo spam dai robot. Nonostante ciò, ricevo ancora spam.

Perché? In che modo i robot battono il CAPTCHA? Usano una sorta di OCR avanzato o ottengono la soluzione da dove sono archiviati?

Come posso impedirlo? Devo passare a un altro tipo di CAPTCHA?


Sono sicuro che le e-mail provengono dal modulo, perché viene inviato dal mio mittente e-mail che serve i messaggi del modulo. Anche lo stile della lettera è lo stesso.

Per la cronaca, sto usando PHP + MySQL, ma non sto cercando una soluzione a questo problema. Ero interessato alla situazione generale di come i robot battessero queste tecnologie. Ho appena detto questa situazione come esempio, così puoi capire meglio di cosa ti sto chiedendo.


86
Voglio contrastare la tua domanda: come possono gli umani battere il CAPTCHA: più spesso, poi, non mi ci vogliono più volte a volte moltissime volte per superare.
Pieter B

14
Se qualcuno pensa che questa domanda meriti un voto negativo, almeno spiegami perché.
totymedli

10
@Blrfl, non capisco come sia fuori tema.

47
Se vuoi che rispondiamo alla tua domanda, prima prova che non sei un robot.
Pete Kirkham,

7
@Blrfl Tuttavia, ha tutto a che fare con lo sviluppo di software di qualità.
Izkata,

Risposte:


72

Due modi più semplici per superare CAPTCHA:

  • Usa le fattorie umane, ovvero chiedi alle persone di riempire i CAPTCHA con denaro, proprio come fa ProTypers .

  • Usa un OCR.

Potrebbe esserci anche un bug nel meccanismo CAPTCHA stesso o nell'applicazione circostante, che consente a qualcuno di bypassare CAPTCHA.

A proposito, l' articolo W3C Inaccessibilità di CAPTCHA: Alternative ai test di Visual Turing sul Web spiega anche come i CAPTCHA potrebbero essere compromessi:

[...] Uno dei primi attacchi documentati al sistema è stato da uno studente di Carnegie Mellon, che ha associato le immagini CAPTCHA all'accesso a un sito Web per adulti, ottenendo così il lavoro umano gratuito per decifrare l'autenticazione. [...]

I progetti esterni [...] hanno mostrato metodologie e risultati che indicano che molti sistemi possono essere sconfitti dai computer con una precisione compresa tra l'88% e il 100%, utilizzando il riconoscimento ottico dei caratteri.

Quindi, come puoi prevenire quegli attacchi?

  • Se hai il tuo CAPTCHA personalizzato implementato, potresti provare a passare a uno popolare, come reCAPTCHA .

    Questo aiuterà se il proprio CAPTCHA era troppo facile da OCR o se c'era un bug che veniva sfruttato con successo.

  • Se si utilizza un popolare meccanismo CAPTCHA, passare a uno personalizzato o ad un altro popolare potrebbe impedire l'OCR.

Tecnicamente, nulla impedirebbe le fattorie umane: potresti creare GIF animate in cui più frame visualizzano testo diverso molto rapidamente e solo un frame è effettivamente visibile dall'utente, puoi distorcere o piegare il testo in tutte le direzioni o trovare nuovi modi alternativi per prevenire Gli OCR che riconoscono il testo, ancora gli umani pagati per risolvere i CAPTCHA li risolveranno con successo.

Potresti voler passare dal CAPTCHA visivo al suono (se non li stai già utilizzando entrambi, e dovresti), ma ciò significa che gli utenti con problemi di udito non sarebbero in grado di utilizzare la tua applicazione.


FrustratedWithFormsDesigner e GalacticCowboy menzionati nei commenti CAPTCHA specifici del dominio. Ho cercato di trovare del materiale su quanto siano efficaci, ma senza successo, quindi ecco solo la mia opinione personale:

  1. I CAPTCHA specifici del dominio possono essere estremamente fastidiosi quando gli utenti reali non hanno idea della risposta.

    Esempio: sto visitando una pagina su un sito Web orientato al cinema. Ho notato un errore in un articolo e desidero commentarlo per informare l'autore dell'errore. Il modulo per i commenti mi chiede, come meccanismo di CAPTCHA, di fornire il nome dell'attrice visualizzato su una foto. Non ho idea di chi sia questa attrice, quindi l'unica cosa che posso fare è lasciare il sito Web (o passare i prossimi due minuti usando Google Immagini).

    Un altro esempio: un sito Web chiede di dare un sinonimo di "misterioso". Per quanto sembri facile per una persona non menomata che parla fluentemente l'inglese, sarebbe impossibile risolvere senza un aiuto esterno per le persone che non parlano bene l'inglese o le persone con disabilità dello sviluppo, senza contare il fatto che trovare sinonimi o contrari è sempre difficile.

  2. La maggior parte di questi problemi specifici del dominio può essere risolta a livello di codice. Entrambi gli esempi che ho fornito possono essere facilmente risolti utilizzando risorse esterne (dizionario di Google Immagini e Sinonimi). Quello sui transistor fornito come esempio da FrustratedWithFormsDesigner è migliore, ma può ancora essere probabilmente risolto con un bot su misura.

  3. Nessuno resiste alle fattorie umane.

  4. O generano dati, proprio come i normali CAPTCHA di testo disegnano caratteri distorti, nel qual caso l'algoritmo di generazione può essere sfruttato per ottimizzare i robot, oppure trovano dati da qualche parte, proprio come reCAPTCHA prende il testo dai libri scansionati , nel qual caso il bot può usa questi dati contro di esso (ad esempio, se prendi parole da un dizionario, chiedendo all'utente di fornire sinonimi, il bot può usare lo stesso dizionario per avere successo al 100%).


4
+1 per aver notato che non è garantito il funzionamento di CAPTCHA
Neil

8
Ho visto alcuni nuovi captcha che sono molto specifici del dominio. Una di esse mostrava immagini di resistori e l'utente doveva inserire la resistenza (c'era un collegamento a una pagina di aiuto per le persone che non sapevano leggere le bande di colore dei resistori). Un altro aveva l'immagine di un piccolo frammento di notazione musicale e l'utente doveva inserire alcune note (come "note solo nel secondo accordo"). Sono ancora giocabili, ma il costo per gli spammer potrebbe non valerne la pena.
FrustratedWithFormsDesigner

2
@MainMa c'era un post su un rapporto tecnico da qualche parte su qualcuno che aveva progettato un bot che batteva i captcha in modo notevolmente veloce, perché ignorava il visual e invece interpretava gli spunti audio con esso, quindi finiresti per dover aggiungere statico al uno audio, che lo rende ancora più difficile per gli utenti
RhysW

@RhysW: l'articolo del W3C che ho citato menziona anche che il passaggio dalle immagini all'audio non risolve il problema dei bot e potrebbe persino rendere le cose più facili per i robot.
Arseni Mourzenko,

24
Fattorie umane. Perché sto immaginando Matrix?
LarsTech

37

Aggiunta alla risposta di MainMa ...

Gli spammer inducono gli altri a fare il CAPTCHA per loro

Fondamentalmente, gli spammer hanno creato un sito warez o un sito porno che sembra avere un CAPTCHA, ma non è un vero CAPTCHA. Un bot estrae il CAPTCHA dal sito che desidera spammare (o altrimenti sfruttare), quindi lo visualizza sul sito Warez o su un sito porno in cui qualcuno lo completa per loro. Quindi il valore CAPTCHA viene restituito al loro bot ...

Un po 'di più sugli spammer

Uso reCAPTCHA e ho scoperto che è praticamente senza valore. Uso anche un filtro antispam personalizzato che rileva lo spam che ha superato reCAPTCHA e devo esaminarlo ogni pochi giorni per falsi positivi.

Anche il mio forum è interamente personalizzato e riceve pochissimo traffico. Non credo che nessuno abbia codificato un attacco specifico al mio sito. Tuttavia, il mio filtro antispam cattura 2k messaggi spam al giorno! Nessuno viene mai visualizzato sul sito. Gli spammer non ottengono alcun beneficio dallo spamming, ma lo fanno ancora.

Riesco a vedere modelli nei tentativi di spamming perché registro tutto. Posso dirti questo: mettendo da parte come superano il CAPTCHA, gli spammer stanno chiaramente usando una tecnica di forza bruta che varia i campi che vengono compilati e il tipo di dati e combinazioni di parole che popolano quei campi. Apparentemente lo fanno in modo così economico (incluso il bypass del CAPTCHA) che non paga nemmeno fare un'analisi dei singoli siti per vedere se ciò che stanno facendo è o non funziona.

Anno dopo anno, continuano a indirizzare il mio sito con migliaia di messaggi di spam al giorno solo per ottenerne uno ogni mese e quello viene eliminato manualmente un giorno dopo. È così economico per lo spam!

Questa sarà una battaglia per gli anni a venire. Soprattutto per piccoli siti moderatori come il mio.


MODIFICA 22/06/2017 : Voglio aggiungere che da quando questo post google ha completamente rinnovato reCAPTCHA e al momento della stesura ha funzionato perfettamente. Anche se sospetto che ci siano un po 'di falsi positivi o è un dolore per gli utenti poiché i post sono diminuiti un po' da quando l'ho implementato. I 2 grandi cambiamenti sono

1) Stanno usando le immagini invece del testo (quindi niente più OCR)

2) Lo stanno combinando con l'attività degli utenti su tutti i siti che utilizzano reCAPTCHA. Quindi, se superi reCAPTCHA sul sito A, quindi vai al sito B, potrebbe anche non chiederti di dimostrare di essere umano! Inoltre (penso) se stai colpendo troppi reCAPTCHA su troppi siti, ti segnalerà anche te. Sono sicuro che sta usando altri tipi di IA anche in base all'attività degli utenti.

Sono sicuro che è solo una questione di tempo fino a quando anche gli spammer lo sconfiggono ...


Questo è probabilmente l'argomento più forte per reCAPTCHA per un piccolo sito Web: Google ha molte più risorse per tenere il passo con le attuali tecniche di spam.
Stephen C. Steel,

15

Hai mai provato a usare captcha cat-dog? Ho un forum che aveva captcha standard e lo ha cambiato e da allora non ho spam ospiti.inserisci qui la descrizione dell'immagine


12

È possibile che il tuo sito sia preso di mira da una forza lavoro a basso costo sfruttata e che un essere umano inserisca manualmente le tue frasi CAPTCHA.

Se la soluzione che stai utilizzando non è eccessivamente sofisticata, è possibile che il tuo aggressore stia riconoscendo l'immagine.

È anche possibile che tu abbia un bug da qualche parte nel tuo codice che consenta di bypassare CAPTCHA.

Non dare per scontato che un robot stia battendo il tuo CAPTCHA. Pensa al tuo sistema in modo olistico e vedi se è stato compromesso.


Combinerei schemi di immagini e CSS che gli umani non sarebbero in grado di risolvere facilmente.
Erik Reppen,

2
Due parole ... Turk meccanico. Amazon ha reso il crash del captcha uno sforzo incredibilmente economico.
Michael Brown,

10

Altri hanno discusso di come gli spammer aggirino i CAPTCHA. Ecco alcuni suggerimenti su come posso impedirlo :

Nota che non ci sono proiettili d'argento e gli spammer sembrano essere 1 passo avanti rispetto al gioco. Quindi dovrai usare una combinazione di più tecniche

  1. Usa una forma di vaso di miele
  2. Utilizzare una domanda CAPTCHA o logica. Domande di base come "mela, pesce, mano, sei - quale di queste è una parte del corpo"
  3. Avere un ritardo. Se il modulo viene pubblicato entro 5 secondi dal caricamento della pagina ignora la richiesta, la maggior parte dei robot invierà entro meno di un secondo
  4. Avere un po 'di monitoraggio dell'indirizzo IP - se noti un ragno che striscia il tuo sito Web che non è in una lista bianca (google, bing), allora aggiungi una lista nera e bannalo. Preferibilmente questo sarebbe dinamico / automatizzato in codice / software

6

Per fare eco alle altre risposte, è probabile che tu stia incontrando robot che usano fattorie umane per entrare nei captcha per loro.

Di recente ho discusso di una tecnica (e rilasciato un modulo Drupal di accompagnamento) che blocca i robot spam richiedendo JavaScript sul lato client. Per quanto ne so, questo ha funzionato con il 100% di efficienza su tutti i siti che hanno utilizzato questo codice. L'idea è di utilizzare AJAX per generare un hash univoco e inviarlo insieme agli altri dati del modulo, quindi calcolare lo stesso hash sul back-end una volta inviato il modulo e confrontare i due valori.

Tutti i dettagli nel mio post sul blog (per coincidenza, poiché hai menzionato l'utilizzo di PHP + MySQL, queste sono le stesse tecnologie descritte qui) - Rilascio del modulo: Badbot; eliminare lo spam ...


1
Funzionerà fino a quando non diventerà diffuso e gli spammer utilizzano un browser senza testa.
Xavier Combelle

1
In che modo l'utilizzo di un browser senza testa cambia qualcosa?
Tatiana Racheva,

-2

Se il tuo sito è twitter e qualcuno lo ha scelto come target specifico (piuttosto che un bot lo trova), puoi smettere di leggere ...

Altrimenti, potrebbe valere la pena non far apparire il modulo NON come un modulo. 1. Non inserire campi con "e-mail" nel tipo, nome o segnaposto, utilizzare nomi brevi o fuorvianti per tutti i campi. 2. Non utilizzare un elemento modulo HTML reale e il pulsante di invio. Piuttosto usa AJAX per pubblicarlo con un clic di un normale div (disegnato come un pulsante). 3. Non inserire l'evento onclick nell'html, aggiungere un listener in JavaScript. 4. Usa JavaScript per compilare tutti i suggerimenti "inserisci qui il tuo indirizzo email" poiché è possibile che i bot non attivino effettivamente JS quando si trascinano le pagine (non sono sicuro su questo, ma lo faccio comunque).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.