모의해킹(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 26654
292 [정보보호] 와이어샤크(Wireshark) 사용법 #2 [인터페이스] file 졸리운_곰 2023.07.30 6
291 [정보보호] 와이어샤크(Wireshark) 사용법 #1 [설치] file 졸리운_곰 2023.07.30 9
290 [정보보호] [2023 디도스 대응 리포트] 디도스 융단폭격에 기업·기관 ‘휘청’ file 졸리운_곰 2023.07.28 8
289 웹페이지 과다 호출 방식의 DDoS공격 사례 및 대처 졸리운_곰 2023.07.28 4
288 [ 一日30分 인생승리의 학습법] HTTP GET Flooding 공격이란? file 졸리운_곰 2023.07.28 7
287 [ 一日30分 인생승리의 학습법] DDoS 공격 대처 및 방어 file 졸리운_곰 2023.07.27 5
286 [ 一日30分 인생승리의 학습법] [ Apache ] DDoS 공격 대응( evasive 모듈,IP 제한 ) 졸리운_곰 2023.07.27 11
285 [보안뉴스] 당신 폰을 훤히 들여다본다... ‘백도어 해킹’의 신무기 스파이칩 file 졸리운_곰 2023.03.26 16
284 모의해킹(Penetration Testing) PortScanner 참고문헌 졸리운_곰 2023.03.20 9
283 모의해킹(Penetration Testing) PortScanner 8. 업그레이드3 : optparse 기능 졸리운_곰 2023.03.20 11
282 모의해킹(Penetration Testing) PortScanner 7. 업그레이드2 : Nmap 활용 file 졸리운_곰 2023.03.20 6
281 모의해킹(Penetration Testing) PortScanner 6. 업그레이드1: 스레드를 활용한 고속 스캔 file 졸리운_곰 2023.03.20 7
280 모의해킹(Penetration Testing) PortScanner 5. 포트 스캔 실행! file 졸리운_곰 2023.03.20 5
279 모의해킹(Penetration Testing) PortScanner 4. 취약한 공격 대상 만들기 file 졸리운_곰 2023.03.20 4
» 모의해킹(Penetration Testing) PortScanner 3. 필요한 기술 익히기 졸리운_곰 2023.03.20 2
277 모의해킹(Penetration Testing) PortScanner 2. 포트 스캐너를 위한 네트워크 기초 다지기 file 졸리운_곰 2023.03.20 5
276 모의해킹(Penetration Testing) PortScanner 1. 포트 스캔이란? 졸리운_곰 2023.03.20 8
275 [보안뉴스] 전 세계에서 가장 흔한 20개의 비밀번호는 무엇? file 졸리운_곰 2022.11.29 1
274 모의해킹(Penetration Testing) [Kali Linux] Kali Linux 명령어 | 배워야 할 기본 사항 file 졸리운_곰 2022.11.18 22
273 모의해킹(Penetration Testing) 칼리리눅스 사용법 file 졸리운_곰 2022.11.18 12
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED