모의해킹(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
92 [보안뉴스] 당신 폰을 훤히 들여다본다... ‘백도어 해킹’의 신무기 스파이칩 file 졸리운_곰 2023.03.26 78
91 [보안뉴스] 전 세계에서 가장 흔한 20개의 비밀번호는 무엇? file 졸리운_곰 2022.11.29 99
90 [보안뉴스] 디지털 바이러스, 그놈이 다시 창궐한다 file 졸리운_곰 2022.03.13 105
89 [보안뉴스] “해결 방법 없다” 구글이 본 제로클릭 공격의 위험 file 졸리운_곰 2022.01.19 132
88 [보안뉴스] 멕시코서 1200억 턴 北해커, 한국 계좌로 송금...누구에게? file 졸리운_곰 2021.02.19 175
87 [단독]”남한 은행 모조리 털어라” 돈줄 마른 북한, 이런 해킹팀까지 file 졸리운_곰 2021.02.12 140
86 "저쪽 애들에게 당했어" 北해킹에 10년 베테랑 기자도 낚였다 file 졸리운_곰 2020.07.05 210
85 北 3개 해킹조직, 亞서 6800억원 규모 암호화폐 탈취 file 졸리운_곰 2020.02.09 156
84 일본 호텔에 근무하는 로봇들, 몰카로 변신시킬 수 있다 file 졸리운_곰 2019.10.25 271
83 [주말판] 프라이버시 침해가 판치는 인터넷에서 살아남기 file 졸리운_곰 2019.01.20 175
82 "애플·아마존 서버에 중국 스파이칩… 한국도 안전 장담 못해" file 졸리운_곰 2018.10.06 207
81 1사분기의 디도스 공격, 숨으려 하지 않았다 file 졸리운_곰 2018.07.06 222
80 갠드크랩 랜섬웨어, 국내 피해 갈수록 확산 file 졸리운_곰 2018.04.22 233
79 [김민석의 Mr. 밀리터리] 가공할 북한 사이버 공격력, 한국은 기능부전 file 졸리운_곰 2018.02.23 270
78 대북제재로 더 과감해지는 北 해킹…美 "전세계가 해킹 표적" file 졸리운_곰 2018.02.21 182
77 인텔 CPU 보안패치 업데이트 했더니 더 심각한 오류가… file 졸리운_곰 2018.01.23 224
76 핵티비스트들이 가장 선호하는 취약점 두 개는? file 졸리운_곰 2018.01.23 245
75 [카드뉴스] 온라인 게임 사기 예방수칙 5 file 졸리운_곰 2018.01.07 196
74 앱 보안 취약한 원인은 오픈소스와 코드양 때문 file 졸리운_곰 2018.01.04 293
73 [카드뉴스] 오늘의 가상화폐 이슈 모아보기 file 졸리운_곰 2017.12.10 136
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED