오늘은 스캔 공격을 할 것이다.
스캔 자체도 공격이므로
실제 사용시 처벌받는다. (그러므로 가상환경에서 혹은 자기 공유기 안에서만 하도록한다.!)
스캔은
보통 공격 전에 공격대상의 시스템을 확인 할 때 사용된다.

어느 포트가 열려있고, OS는 뭐를 쓰고있고 방화벽은 어떻게 있고 등등
스캔을 통해서 사전 정보를 입수한다.

스캔 공격을 하기 전에
피해자의 호스트에서 열수 있는 포트는 열기 위하여 아래와같이
서비스를 실행해준다.



(포트 개방)



그 후 공격자 호스트에서
nmap을 이용하여 스캔해준다.



(스캔)



스캔 결과를 보면 열려있는 포트 번호가 주룩 나와있다.

어떤 식으로 스캔을 하는 걸까?
피해자의 호스트에서 와이어샤크로 패킷을 분석했다.



(패킷 분석)



패킷을 보면 SYN 패킷과 RST 패킷이 잔뜩 보인다.

nmap은 기본적으로 다른 설정을 안해주면 TCP Half Scan을 한다.
스텔스 스캔이라고도 하는데
SYN 패킷을 걸고 응답이 ACK로 오면 RST로 끊어주고
응답이 RST로 오면 닫혀있다는 것을 아는 것이다.



(패킷 분석)



패킷을 보면 SYN 패켓에 대해 ACK 패킷이 오니까 바로 RST 패킷을 보내 끊어주었다.

이번엔 TCP Full Scan을 해보겠다.



(TCP Full Scan)




(패킷 화면)



패킷을 보면
연결을 다 해주는 것을 확인 할 수 있다.
이 때문에 흔적이 남는 단점이 있다.
원리는 Half Scan과 같다. 다만 RST를 보내지 않고 연결을 해준다는 것이 다르다.

이번엔 Fin 패킷을 보내는 Fin Scan을 해보겠다.
명령어는 -sF 이다.



(FIn Scan)




(패킷 화면)



패킷을 보면 FIN 패킷이 날라오는 것을 확인 할 수 있다.

FIN 패킷은 열려있으면 아무 응답이 없고, 닫혀있으면 RST가 오는 원리를 이용한다.

같은 원리인 크리스마스 Scan을 해보겠다.
명령어 -sX



(X-mas Scan)




(패킷 화면)



패킷을 보면 모든 Flag가 설정되있는 것을 볼 수 있다.

그 다음으로는 Null Scan이 있다.
Null 스캔도 Fin, X-mas Scan과 원리가 같다.
명령어는 -sN이다.



(NULL Scan)




(패킷 화면)



패킷을 보면 아무 Flag도 설정되있지 않아
<None>으로 표시되는 것을 확인 할 수 있다.

또 명령어 -O를 입력해주면
해당 시스템의 운영체제 정보를 확인 할 수 있다.



(-O 명령어)



조금 더 상세하게 운영체제 정보까지 파악 할 수 있다.

오늘은 공격전 상대의 정보를 파악하는데 필요한 스캔 공격을 알아보았다.




(모든 해킹은 실제 사용시 불법이므로 실제 사용은 절대 안됩니다.
 모든 책임은 행한자에게 존재합니다.)

오늘은 SET을 이용해 볼것이다.

SET 이란?
Socail Engineering Toolkit : 사회공학적 해킹을 할 수 있는 도구들의 모음이다.

칼리리눅스에는 SET이 내장되어있다. 화면 왼쪽 위에 Applications 목록에 8번 항목 Exploitation Tools 목록에 SET이 들어있다.



(SET 위치)



우리는 SET을 최신 버젼으로 이용하기 위해서
SET을 지우고 다시 설치할 것이다.




(기존 SET 삭제)




(SET 다시 설치)




(설치 완료 모습)




우리는 SET 모듈에서 스팸메일을 보내볼 것이다.
정확히 말하면 Mass Mailer Attack은 웜을 이용한 공격이지만
SET Mass Mailer Attack 에서는 웜을 만드는 기능이 없다.
하지만 발신자 메일 주소를 가짜로 보내거나 다수의 수진자에게 메일을 전송하는 공격은 가능하다.

setoolkit을 실행시켜준다.



(setoolkit 실행)




(경고창)




경고창이 무시무시하게 뜬다. 법적 책임은 각자 본인에게 있습니다.
책임을 질거면 y를 선택하면 된다.




(첫 메뉴 화면)




첫 메뉴 화면이다.
여기서 다양한 툴들이 존재하는데
우리는 1번 항목인 Social -Engineering Attacks을 할것이다.

공격에 앞서!
설정해주어야할 것이 하나 있다.
터미널을 하나 열어서 setoolkit의 set.config 파일을 수정해주어야한다.




(setoolkit/set.config 파일 열기)




(수정)




위 빨간색 표시처럼 sendmail을 on으로 열어두는 것이다.
우리가 메일을 직접 보낼 것이기 때문에 ON으로 바꾸어주야한다.

다시 돌아와서
1을 입력해준다. (Social-Engineering Attacks)




(1번 선택)




그 후 5번을 선택한다.
Mass Mailer Attack



(5번 선택)




그 다음으로 메일 보내기를 시작할 것인지 묻는 화면인데
y를 누르면 된다.



(Yes 선택)




1 번 은 Single 하나의 메일 주소에 메일을 보내는 것이고
2 번은 여러개의 메일에 보내는 것이다.

먼저 1번부터 해보자. :)
1번 선택



(1번 선택)




선택후 gamil을 사용할 것인지 아니면 현재 설치된 메일 서버로 보낼 것인지 선택하게 되어있다.
이 공격을 하기전에 메일 서버를 설치해 두었으므로 (메일 서버 구축은 따로 포스팅 하겠다.)
메일 서버를 이용해 보낼 것이다. 2번 선택
그리고 가짜 메일 주소
그리고 가짜 보내는 사람 이름
우선순위 높은 것으로 하겠느냐. yes
파일 첨부 : no
평문으로 보내는 것 : p
그리고 제목하고 내용을 쓰면 메일이 전송된다.




(메일 발송)



확인해보니 naver.com로 보냈는데 메일이 필터링 되서 수신되지 않았다...!

그래서 nate로 바꾸어서 다시 전송해보았다.







(메일 수신 화면)



(메일 내용)



메일이 아주아주 잘 왔다.
:)

그렇다면 이번에는
한번에 여러 계정으로 메일을 보내보겠다. (이게 읽기 제일 싫은 스팸메일..)

먼저 maillist 텍스트 파일을 만들어서 보낼 메일 주소를 다 적는다.
나는 naver, nate, gmail을 선택해서 보냈다.



(maillist)




위와 같은 과정이고
다만 Single , Mass 선택에서
2번 Mass를 선택하면 된다.



(2번 선택)



그리고 보낼 메일주소들이 적힌 파일들의 주소를 적어준다.
/root/maillist.txt 로 적어주었다.
그리고 나머지 과정은 위와 전부 같다.




(메일 전송)





(전송된 모습)




전송된 모습이다.
이제 직접 확인해 보겠다.
역시 naver는 필터링으로 걸러져 오지 않았다.
다만 nate와 gmail은 바로 잘 온것을 확인할 수 있다.





(메일이 전달된 모습)




(메일이 전달된 모습)





여기 까지 SET을 이용해 Mass Mailer Attack을 구현해보았다.
여기서 phishing URI를 활용하면 진짜 Mass Mailer Attack을 구현할 수 있는데
직접 실험해 보겠다. 또 다음에는 SET을 이용해 다른 공격을 해보겠다.


오늘은 패스워드 크랙을 해볼 것이다.

패스워드 크랙이란
패스워드를 알아내는 것이다.
아이디에 대한 비밀번호를 찾아내는 것이다.

방법은
무차별 대입 공격(브루트 포스)
사전 공격
중간자대입공격 등등 이 있다.

오늘 해볼 것은 브루트포스와 사전공격이다.
브루트 포스는 무작정 가능한 비밀번호를 다 입력해보는 것이고 (무식, 하지만 컴퓨팅 파워에 따라 효과적)
사전 공격은 비밀번호 일것 같은 애들을 묶어서 그 애들만 집어 넣어 보는 것이다.

먼저 패스워드 크랙을 해보기 위해
서버 리눅스에서 간단하게 FTP 서버를 구축했다.
구축했다기 보다는 .. 프로그램을 설치했다. :)





(설치 명령어)



그 후 공격자 컴퓨터에서 정상적인 접속을 해보았다.


(정상적인 접속 화면.)



정상적으로 아이디와 비밀번호를 입력하고 접속했다.

그 후 FTP 서버가 잘 동작하는지 확인하기 위하여
파일을 다운로드 받아보기로 했다.




(다운 받는 모습)



서버에는 접속하고 이런 로그들이 다 남겨지는데
확인해보겠다.



(로그 화면)




방금 클라이언트가 로그인 한 로그와 다운로드한 로그가 기록된 것을 확인 할 수 있다.

자 이제 패스워드 공격을 우리가 구축한 FTP 서버로 시도해 보겠다.

(경고-이 공격은 불법이므로, 절대로 남의 패스워드를 크랙해서는 안된다.)

무차별 대입공격으로 hydra 라는 툴을 사용할 것이다.
패스워드 크랙 툴로써 오늘 사용해봤는데 신기하고 재밌는 툴이다.



(명령어 입력)


명령어 입력 화면이다.
-t 는 쓰레드의 개수를 설정해주는 것이고
-w 는 쓰레드의 웨이팅 타임을 설정하는 것이다.
짧으면 좋다고 했는데 너무 짧으면 패스워드를 못알아낸다...
로그인하고 응답오는 시간을 감안하는게 좋은거 같다.
-l 아이디를 입력한다.
-V 과정을 보여준다.
-f 비밀번호를 찾으면 종료한다.
-x 는 다양한 비밀번호 유형을 설정하는데 위에 설정한건 4~6자리의 소문자이다.

패스워드 크랙의 시간을 짧게하기위해 일부러
FTP서버의 비밀번호를 잠깐 abaa 로 바꾸었다.




(비밀번호를 찾은 모습)



패스워드 크랙 성공 모습이다.

이번엔 같은 툴로 사전 공격을 해보겠다.
사전 리스트를 만들어준다.




(사전 리스트)


비밀번호로 예상되는 것들의 리스트를 만들어준다.

명렁어에 pass.list를 추가해준다.



(명령어 입력)





(성공 화면)



비밀번호가 정확히 크랙된 모습을 볼 수 있다.

이번에는 다른 툴을 써보겠다.

msfconsole 이라는 툴(?) 메타스플로잇이다.
해킹툴 도구집합체?! 




(msfconsole 툴 시작)




(첫 화면)



첫 화면이다.

재밌는 모양으로 생겼다 :)

ftp_login에 사용될 툴을 찾는다. search




(검색 화면)




(ftp_login)



우리는 저기 나와있는 ftp_login 을 이용할 것이다.

use 명령어로 실행한다.




(설정화면)



실행하고 설정을 해준다. (대상 아이피라던지 등등)



(크랙 성공 화면)



이 또한 순식간에 크랙된 것을 확인 할 수 있다.


오늘은 SQL Injection을 직접 실험해 볼 것이다.

sql injection이란
입력 값에서 비정상적인 문구를 입력하여 비정상적인 동작을 유발시키는 것이다.

오늘 내가 할 것은
로그인 상태에서 비밀번호로 비정상적인 문구를 입력하여
로그인에 성공해 보겠다.

사용할 sql injection의 원리는
입력한 데이터가 서버로 날라가고 코드에 입력되는데
1' or '1 과 같은 값을 입력하게 되면
코드 상에서 항상 참의 값을 유발하여 로그인에 성공하는 것이다.

다른 예로는 주석처리를 이용하여
sql injection을 시행하는 방법이다.
SQL Injection을 통해 받는 응답을 통해서 페이지 코드를 유추하여
정확하고 원하는 동작을 유발하도록 SQL을 Injection 하는 것이다.

SQL Injectino은 실제 서버에서 사용하면 안된다.
(불법!)

이 공격을 수행해보기 위해
서버를 만들어야한다.

간단하게 php 파일을 생성한다.



(php 파일 생성)




(php 파일 작성)



php 파일을 작성한다.

간단히 로그인창을 만들 것이다.
아이디와 비밀번호를 입력받고
인증하는 페이지다.

로그인 페이지 만드는 과정은 (JSP 혹은 Web 프로그래밍 게시판에 정리하겠다.)




(만들어진 페이지 모습)



이제 이 서버에 공격을 해보겠다.

공격에 앞서 방화벽 부터 체크해야한다.

wafw00f는 웹 방화벽 탐지 프로그램이다.



(웹 서버 IP 주소 입력)





(실행 화면)



실행 화면을 보면
웹 방화벽이 탐지 되지 않았다.

즉 공격이 가능하다는 뜻이다.
이제 sql 구문을 입력해 보겠다.




(sql 구문 입력)



sql 구문을 입력한다.



(로그인 성공)



입력한 sql 문구는
1' or '1
이다.

비밀번호가 아님에도 불구하고 로그인에 성공하였다.

공격 성공!
이 공격을 탐지 할 수 있을까?

서버에서 wireshark를 동작시키고있었다.



(wireshark 동작)



패킷 캡쳐를 중단하고
conversations 로 들어가 패킷을 확인해 볼것이다.
많은 양의 패킷의 경우 conversation 항목으로 쉽게 패킷 내용을 볼 수 있다.
(일일이 패킷내용을 보기 힘드므로.)




(conversation 클릭)




(패킷 Follow Stream)



공격자 (120번) 이 접속한 내용을 확인해보겠다.

패킷을 클릭해서 Follow Stream 을 클릭한다.



(패킷 내용)



패킷 내용을 확인해보니
패스워드에 비정상적인 값이 입력된 것을 확인 할 수 있었다.








오늘은 DNS Spoofing 공격을 해볼 것이다.

DNS Spoofing이란 DNS 서버를 조작하거나, 호스트에게 잘못된 DNS 정보를
보내어 잘못된 DNS 정보를 전달해 원하는 IP 주소로 이동하게 하는 것이다.

( 이 공격은 불법이므로 실제로 사용해서는 안됩니다.
 반드시 가상환경을 구축하거나 개인적으로 실험하세요 )
( 본인이 책임져야 됩니다.)

DNS 스푸핑을 쉽게 말하면
피해자가 naver.com 으로 입력했는데 다른 공격자가 원하는 사이트로 이동하는 것이다.

공격 환경
공격자 : 칼리리눅스 (120번 IP)
피해자 : 윈도우 ( 4 번 IP)

공격자인 내가 피해자가 naver로 접속할 때 학교 사이트로 넘어가게 할 것이다.

DNS 서버를 건드리는 것은 불법이므로
피해자의 DNS 캐쉬 테이블을 조작해서 공격을 성공시키겠다.

DNS 스푸핑을 하기 위해 칼리리눅스의 ettercap 툴을 이용할 것이다.
Ettercap 툴은 유명한 MTM 공격 툴로 우리의 공격목적에 알맞다.

먼저
Ettercap을 이용해서 dns spoofing을 조작할 것이므로
DNS 테이블을 조작할 것이다.

공격 계획은 이러하다.
1. 조작된 DNS 테이블을 만든다.
2. 피해자와 게이트웨이 중간에 들어간다. (MTM)
   (ARP Spoofing을 이용해서)
3. DNS Spoofing을 한다.
4. 게임 끝!



(dns 파일로 접속)





(naver 의 주소를 학교 IP주소로 변경한다.)



"*" 표시는 무엇이 들어와도 괜찮다는 이야기이다.
그래서 표현을 *.naver.* 으로 해준 것이다.

자 이제 테이블도 준비됬고 이 정보를 뿌리면 된다.
Ettercap을 열어준다.



(열어서 Unified sniffing 을 클릭한다.)








(네트워크 인터페이스를 선택)





(호스트 스캔한다.)





(스캔된 리스트 화면)






(타겟 설정)



타겟으로 게이트웨이와 피해자 호스트로 설정한다.

이 둘 중간에 들어가서 ARP Spoofing을 먼저 할 것이다.





(ARP 스푸핑)



ARP 스푸핑을 한다.
sniffer remote connections 을 선택한다. 이것은 포워딩도 같이 해주겠다는 것이다.

자 그럼 여기 까지 MTM 까지 왔다.

이제 DNS Spoofing을 해주면 된다.




(DNS Spoofing을 선택해준다.)



이제 피해자는 인터넷 주소창에 naver.com 을 입력하면
DNS 캐쉬 테이블에 적혀있는 아이피 주소로 바로 이동할 것이다.




(DNS 스푸핑된 모습)



naver.com에 입력했지만
naver가 아닌 다른 사이트가 열린다.

이로써 DNS Spoofing 공격을 성공했다.





+ Recent posts