해커의 언어, 치명적 파이썬 – CHAPTER 2 침투 테스트 – 포트 스캐너 만들기


 

Notice : 해당 자료가 저작권등에 의해서 문제가 있다면 바로 삭제하겠습니다.
연구목적으로 사용하지 않고 악의적인 목적으로 이용할 경우 발생할 수 있는 법적은 책임은 모두 본인에게 있습니다.

VIOLENT_PYTHON_S
[구매하기]

해커의 언어, 치명적 파이썬 – CHAPTER 1 소개
해커의 언어, 치명적 파이썬 – CHAPTER 2 침투 테스트 – 포트 스캐너 만들기
해커의 언어, 치명적 파이썬 – CHAPTER 2 침투 테스트 – SSH 봇넷 구축하기
해커의 언어, 치명적 파이썬 – CHAPTER 2 침투 테스트 – FTP와 웹을 이용한 대규모 공격
해커의 언어, 치명적 파이썬 – CHAPTER 2 침투 테스트 – 컨피커 노력하면 된다

2.1 소개: 모리스 웜 – 오늘날에도 유효할까?
– 모리스웸이 사용한 공격기법 3가지
1. sendmail 프로그램 취약점
2. finger 데몬의 취약점
3. 사용자 이름과 패스워드 목록을 이용한 원격쉘(RSH)으로 공격

2.2 포트 스캐너 만들기
– 정보수집은 모든 사이버 공격의 첫단계
– 열려있는 TCP 포트를 찾기 위해 스캔
– IP주소와 Tcp port 를 알아야 연결 가능.
– 3way handshaking (http://charmpa.egloos.com/1491449)

2.2.1 TCP 풀 커넥트 스캔
– socket API import
* socket.gethostbyname(hostname)
* socket.gethostbyaddr(ip_address)
* socket.socket([family[, type[, proto]]])
* socket.create_connection(address[, timeout[, source_address]])
– TCP 스캔은 TCP 처음 연결 시 일어나는 3-웨이 핸드쉐이킹을 탐지하는 기법이다. 만약 핸드쉐이킹이 정상적으로 완료되었다면, 해당 TCP 포트는 정상적으로 열려 있는 것으로 판단할 수 있다. 서비스 거부 공격을 막기 위해, 포트 스캐너는 핸드쉐이킹 직후 연결을 종료한다. 이 방식은 일반적인 소켓 connect()를 이용하기 때문에, Nmap 등의 프로그램에서는 이 방식을 연결 스캔(connect scan)으로 부른다.

– TCP 풀 커넥트 스캔을 위한 5단계
1. 호스트 이름과 스캐닝 할 포트 목록을 입력
2. 호스트이름을 IPv4 인터넷 주소로 변환
3. 각 포트마다 연결 시도
4. 서비스 판단을 위한 가비지 데이터 전송
5. 어플리케이션에서 전송하는 배너값읽음

2.2.2 애플리케이션 배너 가져오기
– 열려있는 포트를 발견하면, 데이터를 전송하고, 응답을 기다림.
– 응 답을 수집하면, 공격대상과 포트에서 실행되는 어플리케이션을 알수 있다.

2.2.3 쓰레드 사용하기
– 각소켓이 스캔을 하는 데 보통 수 초가 소요
– 순차적으로 스캔하는 것보다 동시에 스캔하는것이 빠름
– 쓰레드 사용 -> 동시에 화면에 출력, 알아보기 힘들고, 순서도 안맞음
– 세마포어를 사용해 lock을 걸어 한번에 하나의 쓰레드만 화면에 출력할수 있도록 구현

실행결과 :

2.2.4 Nmap 포트 스캐너 통합하기
– Nmap은 ACK, RST, FIN, SYN-ACK 등 다양한 기능 지원
– Nmap은 결과를 xml 형태로 저장
– XML 구문분석 라이브러리로 파이썬에서 값을 읽어옴(python-nmap 설치)
– 다른 종류의 포트 스캔
* TCP SYN SCAN : 하프오픈 스캔, SYN 패킷 보내고, 마지막 ACK를 안보냄, RST를 받으면 닫혀있음
* TCP NULL SCAN : TCP 플래그 헤더를 0으로 설정, RST를 받으면 닫혀있음
* TCP FIN SCAN : FIN을 전송(TCP 연결 종료), RST를 받으면 닫혀있음
* TCP XMAS SCAN : PSH, FIN, URG TCP 플래그를 활성화, RST를 받으면 닫혀있음

실행결과 :

 


This entry was posted in Python/Ruby/Perl, Reading and tagged , . Bookmark the permalink.

3 Responses to 해커의 언어, 치명적 파이썬 – CHAPTER 2 침투 테스트 – 포트 스캐너 만들기

  1. coksa says:

    안녕하세요. 라긴이라고 합니다.
    아폴로님이 보신 해커의 언어 치명적 파이썬을 보고 저도 따라해보고 싶어서
    책을 보고 따라하고 있는데요. 막히는 부분이 있어서 이렇게 댓글을 남깁니다.
    nmap을 사용하는 예제인데요.
    우선 nmap은 정상적으로 설치가 된것으로 파악됩니다.
    그런데 실행을 하
    면 아래와 같은 에러가 나는데요.

    devfunerui-MacBook-Air:ch2 devfuner$ python 2-nmapScan.py -H 127.0.0.1 -p 22
    Traceback (most recent call last):
    File “2-nmapScan.py”, line 31, in
    main()
    File “2-nmapScan.py”, line 28, in main
    nmapScan(tgtHost, tgtPort)
    File “2-nmapScan.py”, line 5, in nmapScan
    nmScan = nmap.PortScanner()
    File “/Library/Python/2.7/site-packages/nmap/nmap.py”, line 118, in __init__
    p = subprocess.Popen([‘nmap’, ‘-V’], bufsize=10000, stdout=subprocess.PIPE)
    File “/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py”, line 711, in __init__
    errread, errwrite)
    File “/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py”, line 1308, in _execute_child
    raise child_exception
    OSError: [Errno 2] No such file or directory

    subprocess.py 이라는 파일은 분명히 해당 위치에 있는데 안되네요.
    잠시 시간내시어 도움 주셨으면 합니다.

    devfuner@gmail.com 메일로 답 주셔도 좋구요.
    감사합니다.

  2. apollo89 says:

    위의 에러메세지만 보고 무슨 에러인지는 정확하게 파악하기 힘들지만..
    추측컨데 nmap 명령의 PATH 가 지정되어 있지 않아서 발생한 것 같습니다.
    nmap의 위치를 PATH에 추가해주시고 다시 한번 해보세요^^

  3. coksa says:

    답변 감사합니다.
    패스 문제는 아니였나보네요. nmap 버전이 안맞아서 그랬던것 같은데 0.2.4로 설치하고 나니까 별다른 에러없이 예제 수행이 되네요.
    그래도 덕분에 더 깊이 있게 보게되어서 문제를 해결했습니다. 감사합니다 ^^
    답변 정말 감사드립니다.

댓글 남기기