티스토리 뷰

반응형






보안업무가 이제 5년이 넘은 것 같습니다. 업무가 소스코드 진단인데 쓸줄 아는 툴은 BURP에서도 몇몇 기능 뿐이죠. 올해에는 Kali를 이용해 다양한 툴을 배워보려고 하고 있습니다. 책을 보다보니 가장 먼저 나온게 NMAP이더군요. 


NMAP은 여러 보안 담당자로부터 자주 언급된 적이 있던 툴인 것으로 보아 자주 사용하는 툴 같습니다. 직접적으로 업무상 하는 일은 아니지만, Python으로 업무에 좀 더 실용적으로 만들 수 있다면 좋을 듯 하여 Python도 공부할 겸 이번 포스팅을 시작해보았습니다.


최종 목표는 입력받은 IP대역과 체크하려는 PORT 범위에 OPEN 된 Well-Known PORT를 엑셀로 저장시키는 것까지 진행보려고 합니다.


오늘은 우선 NMAP의 사용을 간단히 익혀보고 CLI 환경에서 입력받은 PORT 범위를 체크하는 아주 간단한 Python을 만들어 보았습니다.





테스트 환경은 항상 IP가 고정이라 엔터만 눌러도 디폴트로 IP가 설정되도록 하고 시작과 마지막 PORT만 입력받아도 되도록 만들어 보았습니다. Python 언어가 생소하고, 여러 곳에서 간단히 작업할 수 있다고 하여 생각한 것처럼 다 될 것 같은데 안되는 것도 있고, 안될 것 같은데 되는 것도 있네요.


앞으로 출력되는 데이터를 파싱하는 것과 파싱된 데이터를 엑셀로 전달하는 것, 그리고 IP도 범위로 받을 수 있도록 도전해보아야 겠습니다.


그런데 이미 NMAP에서 서브넷마스크를 입력값으로 받을 수 있어서 IP 대역을 별도로 받을 필요도 없고

-oA 옵션을 통해 XML로 결과를 저장할 수 있어서 과연 어떻게 활용할 수 있을지는 고민이 필요한 부분일 것 같네요..




Fin




import os
 
# 디폴트 설정 값
DEFAULT_TARGET_IP="192.168.0.17"
DEFAULT_TARGET_PORT=21
 
print("This is check port using NMAP")
print("Default IP : " + DEFAULT_TARGET_IP )
print("Default PORT : " + str(DEFAULT_TARGET_PORT))
print("Develop by SalaYH")
print("++++++++++++++++++++++++++++++++++++")
 
 
# 검색 정보를 입력하지 않을 경우 오류 대신 디폴트 값을 넣기 위해
# input() 대신 raw_input()을 사용 (입력받은 값이 0 인경울 체크)
TARGET_IP = raw_input("Input IP  : ")
TARGET_PORT_S = raw_input("Input Start PORT : ")
TARGET_PORT_E = raw_input("Input End PORT : ")
 
if len(TARGET_IP) == 0:
    TARGET_IP = DEFAULT_TARGET_IP
 
 
# 입력받은 값이 숫자가 아닐 경우 디폴트 값으로 설정
if len(TARGET_PORT_S) == 0:
    TARGET_PORT_S = DEFAULT_TARGET_PORT
else:
    try:
        TARGET_PORT_S = int(TARGET_PORT_S)
    except:
        TARGET_PORT_S = DEFAULT_TARGET_PORT
 
if len(TARGET_PORT_E) == 0:
    TARGET_PORT_E = DEFAULT_TARGET_PORT
else:
    try:
        TARGET_PORT_E = int(TARGET_PORT_E)
    except:
        TARGET_PORT_E = DEFAULT_TARGET_PORT
 
print("++++++++++++++++++++++++++++++++++++")
 
print("Start Check")
print("Check IP : " + TARGET_IP)
print("Check Port : " + str(TARGET_PORT_S) + " to " + str(TARGET_PORT_E))
 
# NMAP 사용법
# Single PORT : namp -sT -p 22 192.168.0.17
# Multi PORT : namp -sT -p T:21-24 192.168.0.17
 
# 검색하는 PORT 개수에 따른 옵션값 변경
if TARGET_PORT_S == TARGET_PORT_E:
    TARGET_PORT = str(TARGET_PORT_S)
else:
    TARGET_PORT = "T:" + str(TARGET_PORT_S) + "-" + str(TARGET_PORT_E)
 
 
COMMAND = "/usr/bin/nmap -sT -p " + TARGET_PORT + " " + TARGET_IP
 
process = os.popen(COMMAND)
results = str(process.read())
 
print(results)
print("")
 
print("End Check PORT")




check_open_port_2.py




반응형

'Python' 카테고리의 다른 글

Python을 이용한 NMAP 활용 툴 만들기 #02  (0) 2019.03.09
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday