모의해킹(Penetration Testing) PortScanner 3. 필요한 기술 익히기

3.   필요한 기술 익히기

 

1)    포트 번호 목록 만들기

 

포트를 효과적으로 스캔하려면 for문을 사용하여 같은 구문의 반복을 최소화해야 한다포트는 65535번까지 존재하기 때문에 모든 포트를 수동으로 적는다면 수없이 노동해야 한다우리는 이미 for문을 사용하여 코드를 줄이는 방법을 배웠다다음 코드를 활용하여 연속적인 포트 리스트를 만들  있다.

 

 

 

>>> for portNum in range(65536):

 

        print portNum

 

 

 

       

 

0

 

1

 

2

 

3

 

4

 

5

 

6

 

7

 

8

 

9

 

10

 

11

 

중략 ...

 

 

 

 

 

 

 이렇게 0~65535포트를 스캔하면 모든 포트를 스캔할  있어 좋지만시간이 오래 걸린다는 단점이 존재한다현존하는 대부분의 포트 스캐너들은 따로 리스트를 작성하여 주요 포트 번호만을 스캔한다아래와 같이 리스트를 생성하여 for문을 활용한 리스트 출력을 실습해보자.

 

 

 

>>> portNums = [21,22,23,25,53,80,110,137,138,139,143,443,445,548,587,993,995,433,1701,1723,3306,5432,8000,8008,8080,8443]

 

>>> for portNum in portNums:

 

        print portNum

 

 

 

       

 

21

 

22

 

23

 

25

 

53

 

80

 

110

 

137

 

138

 

139

 

143

 

443

 

445

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

중략 ....

 

 

 

 

 

  • 포트 번호에도 종류가 있다?

 

  포트 번호에도 종류가 있다보통  가지(Well-known Port, Registered ports) 나눈다.

 

 번째는  알려진 포트(Well-known Port)라고 부르는 0~1023 포트는 유닉스 계열 운영체제에서는 관리자 권한으로만 실행이 가능하다 서비스 포트들의 역할은 모두 정해져서 사용하고 있으므로 다른 용도로는 사용하지 않도록 하는 것이 좋다.

 

 번째 Registered Port 1024~49151 포트로 회사들마다 등록하여 사용하고 있고마지막 Dynamic Port 49151~65535 동적 또는 개인적으로 사용되는 포트들로 등록할  없는 포트들이다.

 

 자세한 내용은 다음 링크를 참고하도록 하자.

 

http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers#Dynamic.2C_private_or_ephemeral_ports

 

 

 

 

 

2)    TCP 통신하기

 

포트를 스캔하는 방법은 여러 가지 존재하지만 우리는 먼저 기초적인 TCP 연결을 통하여 스캔할 것이다소켓을 만들어서 대상 포트에 연결을 요청해보자소켓을 만들 때는 socket이라는 라이브러리가 필요하다 라이브러리를 임포트한  socket 생성하고 www.naver.com 80 포트로 연결을 요청하겠다. 80  포트는  서비스 포트이다.

 

 

 

>>> import socket                            # socket 임포트

 

>>> s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    # socket 생성

 

>>> s.connect(("www.naver.com",80))          www.naver.com 80 포트로 연결

 

>>> s.send("GET / HTTP1.1\n")                # GET 요청 송신

 

14

 

>>> naverweb = s.recv(1024*1024)                     # Web Page 수신

 

>>> naverweb                                 응답 결과 출력

 

'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head>\n<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\n<title>\xeb\x84\xa4\xec\x9d\xb4\xeb\xb2\x84 :: \xed\x8e\x98\xec\x9d\xb4\xec\xa7\x80\xeb\xa5\xbc \xec\xb0\xbe\xec\x9d\x84 \xec\x88\x98 \xec\x97\x86\xec\x8a\xb5\xeb\x8b\x88\xeb\x8b\xa4.</title>\n<link rel="stylesheet" type="text/css" href="/css/err.css?1007" />\n<script type=text/javascript> \nvar defaultCharset = document.charset ;\nfunction isIE(){ return

 

...중략...

 

 

 

 

 

 

 

3)    UDP 통신하기

 

UDP 통신을 하는 방법은 TCP 보다 훨씬 단순하다소켓을 만들 시에는 socket.SOCK_STREAM socket.SOCK_DGRAM으로 바꿔주면 된다. UDP 비연결형 통신이기 때문에 별도의 연결 과정은 필요 없으며 바로 데이터를 송신하면 된다송신  host port 번호를 적어준다.

 

다음 코드를 작성하고 UDP 패킷을 생성하여 데이터를 수신해보도록 하자대상 서버는 kns.kornet.net DNS 서버이다참고로 DNS 서비스는 보통 UDP 사용한다.

 

 

 

>>> import socket

 

>>> tgtHost = "168.126.63.1"                                 # DNS 서버

 

>>> tgtPort = 53                                                    # DNS 포트

 

>>> client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)       소켓 생성

 

>>> client.sendto("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", (tgtHost,tgtPort))

 

32                                                           데이터 송신

 

>>> data, addr=client.recvfrom(4096)                         데이터 수신

 

>>> print data, addr                                         데이터 출력

 

AAÁ ('168.126.63.1', 53)

 

 

 

 

 

  • DNS 서버?

DNS 서버란 Domain Name System 약자이다. IP 사람이 기억하기 어렵기 때문에 DNS 사용하면 도메인 이름을 IP 주소로 알려준다 브라우저에 www.naver.com 입력하면 브라우저가 DNS 서버로부터 www.naver.com IP 주소를 받아와서 IP 주소로 연결을 요청한다. 

 

[출처] https://m.blog.naver.com/isc0304/220373624417

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
공지 침투테스트(취약점검점검, 모의해킹) 문의 / 답변 졸리운_곰 2017.12.10 28360
43 [정보보호] 리눅스 tcpdump 사용방법 및 명령어 정리 / tcpdump 파일로 저장하는 방법 file 졸리운_곰 2023.08.02 175
42 [정보보호] [리눅스/Linux] tcpdump 사용법 졸리운_곰 2023.08.02 139
41 [정보보호] tcpdump 사용법 졸리운_곰 2023.08.02 113
40 [정보보호] '전문가들이 추천한' 네트워크·보안 리눅스 툴 10선 file 졸리운_곰 2023.07.30 228
39 [정보보호] NPcap과 WinPcap 모두 설치하기 졸리운_곰 2023.07.30 161
38 [정보보호] 와이어샤크(Wireshark) 사용법 #6 [Meta 데이터 추출] file 졸리운_곰 2023.07.30 189
37 [정보보호] 와이어샤크(Wireshark) 사용법 #5 [Host 정보 조회] file 졸리운_곰 2023.07.30 111
36 [정보보호] 와이어샤크(Wireshark) 사용법 #4 [필드 항목 설정] file 졸리운_곰 2023.07.30 87
35 [정보보호] 와이어샤크(Wireshark) 사용법 #3 [필터링] file 졸리운_곰 2023.07.30 127
34 [정보보호] 와이어샤크(Wireshark) 사용법 #2 [인터페이스] file 졸리운_곰 2023.07.30 103
33 [정보보호] 와이어샤크(Wireshark) 사용법 #1 [설치] file 졸리운_곰 2023.07.30 87
32 [정보보호] [2023 디도스 대응 리포트] 디도스 융단폭격에 기업·기관 ‘휘청’ file 졸리운_곰 2023.07.28 58
31 산업보안관리사 요약집입니다. (제가 작년 시험볼때 요약했던것) file 졸리운_곰 2017.11.08 835
30 •산업보안관리사 및 자격증 소개 및 자격시험 예시문제 file 졸리운_곰 2017.11.08 519
29 인공지능으로 공격하고 인공지능으로 막는다, 보안 전문가와 같은 인공지능을 만들기 위한 방법 file 졸리운_곰 2017.09.10 231
28 코드 코딩 난독화 : 가상머신 랭귀지(JavaVM, CLR ms, Python)의 필수 덕목 file 졸리운_곰 2017.07.01 414
27 소프트웨어 개발보안(시큐어 코딩) 관련 가이드 file 졸리운_곰 2017.02.11 406
26 개인정보취급방침 만들기를 도와주는 웹사이트 file 졸리운_곰 2017.02.10 158
25 모바일 앱 개발과정에서 참고해야 할 프라이버시 보호 수칙 졸리운_곰 2017.02.10 215
24 Detection and Visualization of Android Malware Behavior 졸리운_곰 2016.04.30 372
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED