Heim >Betrieb und Instandhaltung >Sicherheit >Verwenden Sie die lexikalische Analyse, um Domänennamen und IPs zu extrahieren

Verwenden Sie die lexikalische Analyse, um Domänennamen und IPs zu extrahieren

王林
王林nach vorne
2019-12-25 13:08:103469Durchsuche

Verwenden Sie die lexikalische Analyse, um Domänennamen und IPs zu extrahieren

Hintergrund

Bei der Analyse der Protokolle habe ich festgestellt, dass einige Protokollparameter andere URLs enthielten, zum Beispiel:

Verwenden Sie die lexikalische Analyse, um Domänennamen und IPs zu extrahieren

Extrahieren Sie die URL (xss.ha.ckers.org) in den Anforderungsparametern und vergleichen Sie sie dann mit der Threat Intelligence-Datenbank. Wenn sie auf die schwarze Liste gelangt, wird sie auf die schwarze Liste gesetzt. Wenn es nicht auf der Blacklist oder Whitelist des Unternehmens steht, können Sie es zuerst markieren und sich später auf die Analyse konzentrieren.

URL extrahieren

Im Internet gibt es viele Artikel zum Thema URL-Extraktion, von denen die meisten reguläre Ausdrücke verwenden. Die Methode ist einfach, aber nicht sehr genau. Ich stelle hier eine Methode zur Verfügung: Verwenden Sie die lexikalische Analyse, um Domänennamen und IPs zu extrahieren. Die Idee ist diesem Artikel entlehnt: https://blog.csdn.net/breaksoftware/article/details/7009209 Wenn Sie interessiert sind, können Sie es sich anhand der Fakten ansehen verbessert wirklich Ihre Körperhaltung.

Der Originaltext ist in C++-Version. Hier habe ich zu Ihrer Information einen ähnlichen Text in Python geschrieben.

Gemeinsame URL-Klassifizierungen

Verwenden Sie die lexikalische Analyse, um Domänennamen und IPs zu extrahieren

Beobachtung zeigt, dass die URL-Struktur in IP-Form am einfachsten ist: 4 Zahlen kleiner als 255 werden durch . geteilt; Domain-Formularvergleich Komplex, aber eines haben sie gemeinsam: Sie alle tragen den Top-Level-Domainnamen .com.

Definieren Sie zulässige Zeichen:

Verwenden Sie die lexikalische Analyse, um Domänennamen und IPs zu extrahieren

Liste der Top-Level-Domainnamen:

Verwenden Sie die lexikalische Analyse, um Domänennamen und IPs zu extrahieren

Formular für Domainnamen Extraktion: wie www.baidu.com.

Verwenden Sie die lexikalische Analyse, um Domänennamen und IPs zu extrahieren

Verwenden Sie die lexikalische Analyse, um Domänennamen und IPs zu extrahieren

IP-Formularextraktion: wie 192.168.1.1.

Verwenden Sie die lexikalische Analyse, um Domänennamen und IPs zu extrahieren

while (i < len(z) and z[i].isdigit()):
                i = i + 1
                ip_v1 = True
                reti = i            if i < len(z) and z[i] == &#39;.&#39;:
                i = i + 1
                reti = i            else:
                tokenType = TK_OTHER
                reti = 1while (i < len(z) and z[i].isdigit()):
                i = i + 1
                ip_v2 = True
            if i < len(z) and z[i] == &#39;.&#39;:
                i = i + 1
            else:                if tokenType != TK_DOMAIN:
                    tokenType = TK_OTHER
                    reti = 1while (i < len(z) and z[i].isdigit()):
                i = i + 1
                ip_v3 = True
            if i < len(z) and z[i] == &#39;.&#39;:
                i = i + 1
            else:                if tokenType != TK_DOMAIN:
                    tokenType = TK_OTHER
                    reti = 1while (i < len(z) and z[i].isdigit()):
                i = i + 1
                ip_v4 = True

            if i < len(z) and z[i] == &#39;:&#39;:
                i = i + 1
            while (i < len(z) and z[i].isdigit()):
                i = i + 1

            if ip_v1 and ip_v2 and ip_v3 and ip_v4:                
                self.urls.append(z[0:i])                
                return reti, tokenType            
            else:                
                if tokenType != TK_DOMAIN:
                    tokenType = TK_OTHER
                    reti = 1

Gemischte Formextraktion: wie 1234.com.
Scannen Sie die erste Hälfte von 1234, die den Merkmalen des IP-Formulars entspricht. Es wurde jedoch festgestellt, dass der Code eine Ausnahme meldet, sodass das IP-Verarbeitungscodesegment hinzugefügt werden muss, um festzustellen, ob das Suffix ist ​ein Top-Level-Domain-Name:

Verwenden Sie die lexikalische Analyse, um Domänennamen und IPs zu extrahieren

Ergebnistest

Testdaten:

Verwenden Sie die lexikalische Analyse, um Domänennamen und IPs zu extrahieren

Wird ausgeführt Ergebnis:

Verwenden Sie die lexikalische Analyse, um Domänennamen und IPs zu extrahieren

Dies ist nur eine vorläufige Version. Bitte korrigieren Sie mich, wenn es Fehler gibt.

Fazit

Früher habe ich Code einfach mit gesenktem Kopf geschrieben und die Überlegungen und die Zusammenfassung danach ignoriert. Jetzt versuche ich, etwas zu ändern und es zu verfeinern und zusammenzufassen.

Code-Portal:

https://github.com/skskevin/UrlDetect/blob/master/tool/domainExtract/domainExtract.py

Empfohlene verwandte Artikel und Tutorials: Webserver-Sicherheit

Das obige ist der detaillierte Inhalt vonVerwenden Sie die lexikalische Analyse, um Domänennamen und IPs zu extrahieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:freebuf.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen