>  기사  >  운영 및 유지보수  >  어휘 분석을 사용하여 도메인 이름 및 IP 추출

어휘 분석을 사용하여 도메인 이름 및 IP 추출

王林
王林앞으로
2019-12-25 13:08:103229검색

어휘 분석을 사용하여 도메인 이름 및 IP 추출

Background

로그를 분석한 결과 로그의 일부 매개변수에 다음과 같은 다른 URL이 포함되어 있음을 발견했습니다.

# 🎜🎜 #

어휘 분석을 사용하여 도메인 이름 및 IP 추출

요청 매개변수에서 URL(xss.ha.ckers.org)을 추출한 후 위협 인텔리전스 데이터베이스와 비교하면 블랙리스트에 도달합니다. 블랙리스트에 오르다 블랙리스트나 회사의 화이트리스트에 없는 경우 먼저 표시하고 나중에 분석에 집중할 수 있습니다.

URL 추출

URL 추출에 대한 많은 기사가 인터넷에 있는데, 대부분 정규 표현식을 사용합니다. 방법은 간단하지만 그다지 정확하지는 않습니다. 여기서는 어휘 분석을 사용하여 도메인 이름과 IP를 추출하는 방법을 제공합니다. 아이디어는 다음 기사에서 빌려왔습니다:

https://blog.csdn.net/breaksoftware/article/details/7009209. 관심이 있다면 다음 사실을 확인해보세요. 주인님이 자세를 정말 좋아지시네요.

원본 텍스트는 C++ 버전입니다. 여기서는 참고용으로 비슷한 내용을 Python으로 작성했습니다.

일반적인 URL 분류

어휘 분석을 사용하여 도메인 이름 및 IP 추출

관찰할 수 있습니다. URL 구조의 IP 형식이 가장 간단합니다. 255 .;으로 분할된 도메인 형식은 더 복잡하지만 공통점이 있습니다. 모두 최상위 도메인 이름이 .com입니다.

유효한 문자 정의:

어휘 분석을 사용하여 도메인 이름 및 IP 추출

최상위 도메인 목록:

#🎜 🎜#어휘 분석을 사용하여 도메인 이름 및 IP 추출 도메인 이름 추출:

등.

www.baidu.com

어휘 분석을 사용하여 도메인 이름 및 IP 추출

어휘 분석을 사용하여 도메인 이름 및 IP 추출IP 형식 추출: 예: 192.168.1.1.

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
어휘 분석을 사용하여 도메인 이름 및 IP 추출혼합 형식 추출: 예: 1234.com.

IP 형식의 특성에 맞는 1234의 전반부를 스캔했으나 코드에서 예외를 보고하는 것으로 확인되었으므로 접미사가 있는지 확인하려면 IP 처리 코드 세그먼트를 추가해야 합니다. ​최상위 도메인 이름:


어휘 분석을 사용하여 도메인 이름 및 IP 추출결과 테스트

테스트 데이터:

# 🎜🎜#

실행 결과: 어휘 분석을 사용하여 도메인 이름 및 IP 추출#🎜 🎜#

이것은 단지 예비 버전입니다. 버그가 있으면 수정해 주세요. .

어휘 분석을 사용하여 도메인 이름 및 IP 추출결론

예전에는 머리 숙인 채 코드 작성에만 집중하고 이후의 생각과 요약은 무시했습니다. 이제는 바꾸려고 노력하고 있고, 작업하면서 다듬고 요약하고 있는데, 기분 좋은 일이 생기면 그걸 도구로 써서 모두와 공유하려고 해요.

코드 포털:

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

추천 관련 기사 및 튜토리얼: webserversecurity

위 내용은 어휘 분석을 사용하여 도메인 이름 및 IP 추출의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 freebuf.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제