해커의 언어, 치명적 파이썬 – CHAPTER 2 침투 테스트 – 제로 데이 개념의 공격 코드 개발하기


 

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

VIOLENT_PYTHON_S
[구매하기]

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

2.6 제로 데이 개념의 공격 코드 개발하기
– 메타스플로잇 프레임워크에는 약 800여개 이상의 공격코드 탑재
– 공격코드를 직접 작성해야 할 경우, 파이썬을 이용해서 과정을 단순화
– 버퍼 오버플로우 개념이해

2.6.1 스택 기반의 버퍼 오버플로우 공격
– 사용자의 입력값을 검증하지 않고 사용하여 EIP의 값을 덮어씀으로 공격자가 올린 쉘코드를 실행하도록 함
– 스택 기반의 버퍼 오버플로우는 공격코드 벡터의 원조격(많이 있고, 계속 증가중)
– 스택 기반의 버퍼 오버플로우 공격코드의 핵심적인 요소들
1. 오버플로우 : 스택에 할당되어있는 겂보다 더큰 입력값을 사용자가 입력하는것
2. 리턴주소 : 스텍의 맨위로 직접 점프하는데 사용되는 4바이트 주소
3. 패딩 : 쉘코드앞에있는 NOP(no operation) 지시들. 이것은 공격자가 짇접 점프하여 주소를 추측할수 있게 해준다.
4. 쉘코드 : 어셈블리언어로 작성된 코드조각

2.6.2 공격의 핵심 요소 추가하기
– shellcode변수 : 메타스플로잇 프레임워크로 생성한 페이로드를 핵사값으로 인코딩하여 포함
– overflow변수 : 알파벳 A를 246개 포함
– return주소변수 : 스텍의 맨위로 직접 점프하게 하는 kernel32.dll의 주소
– padding변수 : 150개의 NOP 지시 포함
– crash변수 : 위의 모든변수를 하나로 만듬

2.6.3 악성코드 전송하기
– Berkeley Socket API으로 공격대상 호스트의 TCP 21 포트에 연결
– 연결 성공시 익명의 사용자 이름과 페스워드 정송
– FTP명령 “RETR”과 crash 변수를 전송

2.6.4 공격코드 모두 통합하기
– 패킷스톰(http://packetstormsecurity.com/)에 포스팅된 프레이만(Freyman)의 원본 공격코드가 완성
– FreeFloat FTP를 WindowsXP SP2, SP3 에 설치하고 테스트
– 프레이만은 취약한 공격대상의 TCP 4444포트에 바인딩하는 쉴코드를 사용
– 공격코드 실행후, netcat을 사용해 4444에 연결

FreefloatFTPServer 다운로드

실행결과

스크립트를 실행을 하면 아래와 같이 Freefloat 가 crach가 발생하고 다운이 되지만, nc으로 4444 포트로 접속되지는 않는다..ㅠ
crash

 


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

5 Responses to 해커의 언어, 치명적 파이썬 – CHAPTER 2 침투 테스트 – 제로 데이 개념의 공격 코드 개발하기

  1. mm says:

    저 또한 4444포트로 접속이 되지않습니다…
    또 패딩이 NOP지시들로서, 공격자가 직접 점프주소를 추측하게 해준다는데 이해가 가질 않습니다. ㅠ

  2. mm says:

    또 kernel32.dll 로 점프하기위한 주소값을 넣어주는데 그 특정 주소값을 어떻게 알고 넣어주었는지,,올리디버거로 열어봐도 잘 모르겠습니다.

  3. apollo89 says:

    저의 경우는 정확하게는 모르겠지만 아마 환경의 문제로 exploit 이 잘되지 않은 것으로 생각되서 그냥 넘어갔습니다.
    말씀하신데로 아마 kernel32.dll의 주소가 맞지 않아서 그런것 같은데 저도 kernel32.dll의 주소를 얻어오는 법을 잘 모르겠네요..ㅠ(저도 공부하고있는 초보라ㅠ)
    그리고 nop에 대해서는 NOP slide 부분을 좀 참고하시면 도움이 될 것 같습니다.
    http://en.wikipedia.org/wiki/NOP_slide

  4. mm says:

    그렇군요, 답변주셔서 감사합니다 ^^

  5. 황선후 says:

    제로바이트apk가 뭔지?

댓글 남기기