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

어느 포트가 열려있고, 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 툴을 이용해
Spear Phishing Attack Vectors를 해보겠다.
사회공학적 해킹 방법으로
파일에 위장 파일을 감추어 전송하는 것이다.
(트로이목마)

setoolkit을 실행한다.



(setoolkit 실행)



1 번. Social-Engineering Attacks 을 선택한다.



(1번 선택)



그 후 우리가 사용할 Spear-Phishing Attack Vectors를 선택한다.




(1번 선택)



그 후 1번을 선택한다.
여기서 2번 3번 설정을 다 할 수 있다.




(1번 선택)




그 다음에 사용할 수 있는 리스트가 나온다. 우리가 사용할 파일을 선택하는 것이다.
그 파일에 위장시켜서 메일 보내는 것이다.
우리는 pdf 파일을 이용해서 보낼 것이다.
13번 선택한다!



(13번 선택)



그 다음으로는
pdf 파일을 선택하는 건데 기존에 있던 pdf 파일에 첨부할 것인지
아니면 빈 pdf 파일을 이용할 것인지 선택하는 것이다.
우리는 연습이므로
2번 빈 pdf 파일을 선택한다.




(2번 선택)



그 후 연결 방법을 선택하는 것인데
2번을 선택할 것이다.
Reverse_TCP란 피해자 컴퓨터에서 나에게 통신 요청을 하게 하는 것이다.
우리가, 공격자가 통신 요청을 하면 방화벽에서 막힐 수 있기 때문에
피해자가 통신요청을 하게 하는 것이다.
2번 선택



(2번 선택)



그 다음으로 우리에게 통신요청을 하게 할 것이므로
공격자의 IP 주소와 포트번호를 적어준다.



(IP와 포트번호 입력)



그렇게 되면
pdf 파일에 exe실행파일을 심는 작업이 이루어진다.
다 이루어진 후에
메일을 전송할 것인지 물어본다.



(yes 입력)



당연히 yes 넘어간다.

그리고 파일의 이름을 그대로 둘것인지
아니면 파일의 이름을 수정할 것인지 선택하는게 나온다.
2번을 선택해서 pdf 파일의 이름을 지정해준다.



(pdf 파일 이름 지정)



그 후 나머지는 비슷하다.



(2번 선택)





(파일 보내기)




메일 제목, 송신자 메일 주소, 이름 등등을 설정해주고
메일을 전송한다.
그러면 아래와 같은 화면으로 대기상태로 들어가게 된다.




(대기상태)



이제 부터 피해자가 pdf 파일을 열 때 까지 기다리면 된다.

피해자의 입장이다.




(메일 수신)



스팸의심으로 메일이 왔다.
아마 pdf 파일에 exe 파일이 심어져 있어서 스팸으로 간주되지 않았을까 생각이 든다.

어쨋든!
파일을 받아서 실행시켜보았다.



(파일 열기)




피해자의 화면에서는 아무 이상이 없다. 별다른 뭐가 없어보인다.

하 지 만!

공격자의 화면을 보겠다 이제




(연결이 된 모습)



?!?!?
공격자의 화면을 보니 연결이 된 모습이 보인다.
피해자가 연결요청을 한것이다.

sessions -l 을 이요해서
연결 할 수 있는 리스트를 확인한다.



(연결 가능 리스트)



1개가 있다 물론 방금 피해자가 열어본 호스트이다.

sessions -i 1 을 이용해 1번과 연결한다.



(연결)




(연결된 모습)



위는 연결된 모습이다.

연결된 모습에서 help 를 입력하면 할 수 있는 다양한 기능들이 나온다.

대표적인 스크린샷을 해보았다.
명령어로 screenshot을 입력한다.



(스크린샷 입력)




아래 파일이 저장된다고 나온다.
이제 이 스크린샷을 확인해보겠다.

리눅스의 이미지 뷰어를 사용한다.




(이미지 뷰어)




(스크린샷 파일)




저장이 된 경로를 따라 들어가보니
스크린샷 파일이 하나 들어있는 것을 확인할 수 있다.




(스크린샷 확인)



스크린샷을 확인해보니
피해자 컴퓨터의 화면이 그대로 나와있는 것을 확인할 수 있다.!!

다른 명령어로 파일이 뭐가있는지
컴퓨터 시스템의 정보등을 확인 할 수 있다.



(파일 내용)





(시스템 정보)




이처럼 트로이목마와 같이
메일을 이용한 공격 기법
사회공학적인 해킹 기법을 구현해 보았다.



오늘은 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 을 클릭한다.



(패킷 내용)



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








칼리 리눅스를 이용해 ARP Spoofing과 Sniffing 공격을 해보겠다.
물론,
실제 서버, 실 사용자에게 공격을 하는 것은 불법이다.
즉, 실제로 사용한다면 본인이 그에 대한 책임을 져야한다.

공격할 환경을 구축해야한다.
VM을 이용해
칼리리눅스(서버) - IP 주소 100번
칼리리눅스(공격자) - IP 주소 120번
윈도우(피해자) - IP주소 4번

상황은 피해자가 서버에 접속을 하는 상황이다. (TELNET 접속)
공격자는 이 때 서버의 계정과 비밀번호를 얻더내는 것이 목표이다.

먼저
피해자가 서버와 통신을 할 것이고 이 때 TELNET에 계정과 비밀번호를 전송할 것이다.

TELNET은 통신이 암호화되어있지 않기 때문에
패킷의 내용을 가져올 수 있다면 즉 스니핑을 할 수 있다면
바로 게임 끝이다.!

이제 관건은 어떻게 스니핑을 할 것인지가 관건이다.
스니핑을 하기 위해
ARP 스푸핑을 이용할 것이다.
네트워크 해킹의 일종으로 ARP Poisoning이라고도 한다.

그래서 피해자와 서버 사이에서 중간자에 들어갈 것이고
이 상황에서 스니핑을 할것이다.
그 후 계정 탈취

계획을 정리하겠다.

1. ARP 스푸핑
2. 스니핑
3. 끝

칼리리눅스의 arpspoofing 툴을 이용해 먼저 스푸핑을 시작한다.




(arpspoofing 명령)





(arp reply 패킷이 전송되는 모습)




피해자의 입장에서 보면


(공격 받기 전 ARP 테이블)





(스푸핑 당한 상황)



이 상황에서는 피해자의 패킷들이 전부 나(공격자)에게 전송되므로
피해자는 현재 인터넷 통신이 되지 않는다.





(인터넷이 끊긴 상황)



이대로 놔두면 피해자는 이상하게 여길 것이고 공격받고 있다는 것을
눈치 챌것이다.

가로챈 패킷을 다시 정상상태로 포워딩을 시켜줘야
피해자가 인터넷 통신이 되고 공격받는 사실을 눈치 채지 못할 것이다.
또 다시 포워딩을 해주면서 나는 피해자와 서버 사이에 들어가게 되는 것이다.

피해자 < - > 나  < - > 서버





(포워딩 해주는 모습)



자 이제 중간까지 들어갔다.

패킷 스니핑을 하면 된다.

우리는 와이어샤크를 이용할 것이다.
와이어 샤크를 이용해 패킷을 확인해 볼 것이다.




(와이어샤크를 캡쳐 중인 모습)



자 이제 와이어 샤크로 감지하고 있고
피해자가 접속하길 기다리면된다.

피해자가 접속을 한다.




(텔넷 서버에 접속하는 모습(피해자 화면))





(접속한 상황(피해자 화면))



이 때 바로
패킷을 분석해보니
TELNET프로토콜을 확인할 수 있었다.
전체적인 내용을 확인하기 위해 Follow TCP Stream을 클릭해준다.




(Follow TCP Stream)





(에러 화면)



에러 화면이다...

이 문제로 실제
밤을 새웠다..
구글도 뒤져보고 실제로 이 문제로 최근 바로 16년 12월에 버그로 보고가 된 부분이었다.
그래서 와이어샤크는 2.2.2 버젼에 이 버그를 패치해서 올려놨는데

확인해보니 내 버젼은 2.2.0 ...
업그레이드 해주었다.
그 후 잘되는 모습이다.





(계정, 패스워드 탈취)



이렇게 TELNET 계정과 패스워드를 획득할 수 있었다.
공격 성공.

!!!



+ Recent posts