남기면 좋잖아

6장 취약점 진단 단계 본문

Penetration testing/Kali Linux

6장 취약점 진단 단계

Beautiful Hugo 2017. 7. 2. 20:51
반응형

- Contents -



6.1 심화 공격 도구

6.2 신뢰된 통신 여부 확인

6.3 사회공학적 공격 기법







안녕하세요~ 오늘은 6장 취약점 진단 단계를 할 차례가 왔습니다.

이제까지 획득한 정보를 이용해 다양한 공격 기법으로 침투를 시도하는 단계인데요. 

종합 진단 도구 프레임워크인 메타스플로잇을 이해하고 실제 환경에서 발생할 수 있는 시나리오 예제를 통해 습득해 보겠습니다.





6.1 심화 공격 도구




이번 절에서는 메타스플로잇과 이를 활용한 도구인 패스트 트랙을 살펴보겠습니다.



6.1.1 메타스플로잇의 개념



먼저 메타스플로잇. 매우 유명한만큼 어떤 도구인지 한번 살펴보고 갈 필요가 있어보입니다.

MSF는 오픈소스 도구로 공격 코드, 페이로드, 인코더, 정찰 도구, 보안 테스팅 등을 제공하는 일종의 체계라고 할 수 있습니다.

또한 MSF는 새로운 공격 코드, 페이로드, 정보 탐색 도구들을 개발할 수 있는 환경을 제공하는 최초이자 최고의 기반 프로그램이라고 할 수 있습니다.

라이브러리 옵션들도 자세히 설명을 해야 하지만 책 한권 이상의 분량으로 설명해도 모자라기 때문에 '시나리오 공격' 부분에서 옵션들을 보면 그 쓰임을 이해할 수 있기 때문에 간단한 개념만 짚고 다음으로 넘어가겠습니다.



6.1.1.1 메타스플로잇의 구성요소



- MSF Payload


MSFpayload는 메타스플로잇의 구성 요소 중 하나로, 다른 프레임워크의 많은 익스플로잇과 실행 가능한 파일, 셸코드 등을 만들 수 있게 도와줍니다. 

셸코드는 C, 루비, 자바스크립트, 심지어 비주얼 베이직으로 만든 앱까지도 포함한 형식을 생성할 수 있습니다. 각 형식들은 다양한 환경에서 사용할 수 있습니다.


- MSFencode


MSFpayload에 의해 생성되는 셸코드는 완벽하게 동작하지만, 많은 프로그램에서 실행될 때 문자열의 끝을 의미하는 null 문자들에 의해 코드가 완성되기전에 종료될 수 있습니다.

셸코드가 cleartext인 상태로 네트워크를 돌아다니는 것은 IDS나 백신 프로그램들에게 잡아가라는 의미와 같습니다. 이런 문제를 해결 하기위해 메타스플로잇 개발자들은 인코딩을 통해 회피할 수 있게 해주는 MSFendcode 사용을 적극 추천하고 있습니다.


- Auxiliary


메타스플로잇은 익스플로잇의 집합체로 시작됬습니다. 그래서 v3 이전 버전에서는 포트 스캔, 핑거프린트 등은 다른 도구를 이용하고 최종공격은 메타스플로잇으로 시도하곤 했습니다.

 v3 이후 추가된 auxiliary는 사전적 의미로 조력자, 보조의 의미를 가지고 여러 기능을 포함시켜 정보를 획득할 수 있으며, 익스플로잇같이 효율적인 기능을 만들수 있습니다. 

유형 별로 14가지 정도로 분류 돼있고, 폴더 이름을 보면 대충 어떤 종류가 있는지 짐작할 수 있습니다.( 칼리기준 : /usr/share/metasploit-framwork/module/auxiliary )

msfconsole을 실행하면 처음 화면에 auxiliary 에 대한 모듈 개수 정보가 나타납니다.



6.1.1.2 메타스플로잇에서 서비스 검색 활용



msfconsole에서는 시스템 명령을 모두 지원하기 때문에 기존과 동일하게 엔맵 명령을 실행할 수 있으며, 엔맵을 지원하는 모듈을 이용한 db_namp을 사용해도 됩니다. 결과는 동일하게 출력되구요. 허나 메타스플로잇의 추가적인 기능을 활용하기 위해선 db_nmap에 익숙해지는 편이 좋습니다.



msfconsole 안에서 nmap, db_nmap, zenmap의 결과물 등을 활용하여 초기 정보 탐색을 할수 있었습니다.

저는 이 중에서 바로 탐색과 동시에 postgresql에 데이타가 들어가게 되는 db_namp을 이용했습니다.


msf > db_nmap -sV -T4 -O -F --version-light 192.168.0.12



스캔 후 차례대로 hosts와 services 명령을 입력해 봤는데요. nmap에서 나온 결과물들이 보다 쉽게 정리되어 나왔습니다.

물론 MSF의 모듈에서 지원되는 포트 스캔도 있습니다. 하지만 엔맵과 융합해 진단을 하는 편이 더욱 효율적이라고 합니다.



6.1.1.3 메타스플로잇을 이용한 시나리오 공격



이번에는 Metasploitable V2 가상머신(192.168.0.12) 에서 발생할 수 있는 취약점 몇개를 이용해 시나리오 기반으로 실습을 해보겠습니다.

우선 이전에 가상머신에 해둔 스캔을 이용하겠습니다.

실제 업무에선 지금 실습과 같이 외부에 많은 포트가 오픈돼 있지 않습니다. 방화벽에서 불필요한 포트의 접근을 제한 하고 있기 때문이죠. 꼭 필요한 80번이나 443번 등 말고는 닫혀있는게 대부분입니다.

그런 의미로 저 또한 80번 포트(웹 서비스)를 이용한 공격을 시도해보겠습니다.


실제 취약대상의 80번포트로 웹 서비스에 접속하게되면 수많은 링크들이 연결되고 연결되어있죠. 하지만 수동으로 하나하나 확인할 수는 없습니다. 이럴때 웹 서비스의 디렉터리 정보를 확인하는 용도의 도구인 'DirBuster'를 사용할 것 입니다.






타겟 URL에 취약대상 주소, 브루트포스 공격을 위한 적절한 파일을 선택해준 후, 스타트를 눌러줍니다.

그리고 잠시후 역시 취약점 서비스이기 때문에 결과를 보면 굉장히 많은 정보들이 도출됩니다.


이제 환경 분석은 어느 정도 진행됐으니 도출된 twiki 웹 서비스를 대상으로 취약점 테스트를 진행해봅시다.

취약점 최신 정보를 확인하기 위해 http://www.exploit-db.com에서 검색을 해봅니다.


tikiwiki 로 검색하고나니 TikiWiki 1.9.5 Sirius - 'sort_mode' Information Disclosure 라는 제목의 취약점으로 진행해보고자 합니다.

sort_mode 변수 값을 처리하는 과정에서 에러가 발생해 데이터베이스의 정보가 노출된 취약점이죠.





자 여기서 보이는 목록 중에서 선택해 취약 서비스에 적용해보면 굉장히 많은 정보가 노출되는 것을 확인할 수 있습니다.



디비명, root, 패스워드가 설정이 안된것까지 모두 도출 되버렸습니다.

이제 디비의 정보들을 모두 알았으니, Mysql에 접속하여 관리자 계정을 탈취해 봅시다.

테이블 정보 중 'user_user' 라는 테이블이 수상합니다.

네 역시나 그 안에 admin/admin 이라는 계정 정보를 확인할 수 있었습니다.


이 계정은 tiwiki 웹 서비스 관리자 로그인 계정이라는 것을 추측할 수 있습니다.




tiwiki 관리자 계정으로 접속한 모습입니다. 

왼쪽 카테고리를 보면 Backup 메뉴에 파일을 첨부할 수 있는 기능이 있는데요. 이를 통해 백도어를 심어 웹셸을 시도해 볼수도 있겠군요..


하지만 우리에겐 메타스플로잇이 있었죠.

다시 msfconsole로 돌아와 msf > search tikiwiki  로 관련 취약점을 검색해봅니다.


그 중 저희는 원격 공격 실행인 "exploit/unix/webapp/tikiwiki_graph_formula_exec" 를 선택합니다.


그리고 옵션을 환경에 맞게 설정합니다. 페이로드는 bind_tcp (php/meterpreter/bind_tcp), RHOST, RPORT를 설정해줍시다.

모든 설정이 끝났으면, exploit 명령을 수행합시다.





오래 걸리지않고 대상 서버의 셸 권한을 획득한 것을 마지막으로 시스템 침투 시나리오를 마칩니다..


이 시나리오말고 아까 중간에 언급했던 파일 업로드 공격도 수행해볼 수 있습니다.

비슷한 맥락으로 본인, 대상상황과 환경 필요한 페이로드와 취약점을 검색하여 적용하고 수행하면 됩니다. 음 말로는 참쉽지만 아무래도 뜻대로 안될때가 더 많겠죠? ㅎㅎ

파일 업로드 공격으로 웹셸을 따는것도 한번쯤 해보면 되게 유익(?)하고 신기합니다. 한번 해보시는걸 추천드립니다.




6.1.2 Exploit-DB : 최신 취약점 정보 수집



Exploit_DB는 http://www.exploit-db.com 을 콘솔 환경에서 검색 할 수 있는 것과 동일합니다.

바로 전에 시나리오에서도 중간에 취약점을 찾는과정에 exploit_db를 이용했었죠?

그만큼 앞으로도 많이 쓰이게 될 몰라선 안될 사이트이기도 합니다.


명령은 # searchsploit <검색할 문자열>




아까전에 tikiwiki 취약점을 검색하듯이 콘솔에서 검색해봤는데요.

4번째 줄에 좀전에 이용한 sort_mode 관련 취약점 게시글이 보입니다. 내용은 오른쪽에 Path 분에 그대로 따라가시면 나오게 됩니다.

취약점을 검색할때 귀찮게 사이트에 들어가지않아도 잘만 쓰면 더욱 빠르고 편하게 찾을 수 있을것 같네요~








6.2 신뢰된 통신 여부 확인




취약점 진단 과정에서 중요한 정보가 네트워크 패킷상에서 암호화 처리돼 통신되는지 확인하는 것은 필수 항목입니다.

수많은 진단 대상들을 고려할때 손쉽게 판단할 수 있는 도구들을 보겠습니다.



6.2.1 SSLScan : 암호화 통신 여부 확인



SSLScan은 SSL 서비스를 사용하고 있는지 확인하고, 그 내용을 가장 쉽고 빠르게 얻을 수 있는 도구입니다.

이 도구는 ssl 서비스에 쿼리를 보내고, 응답이 오는 내용을 분석해 사용자에게 보여줍니다.


구글사이트를 대상으로 ssl 정보를 확인하는 과정을 보겠습니다.


 # sslscan --no-falied <URL>




결과를 살펴보면, 구글은 ssl 서비스를 이용하며 어떤 암호화 알고리즘에 공개키 등을 사용자가 보기편하게 정렬해서 보여줍니다.










6.3 사회공학적 공격 기법




 사회공학 기법은 간단하게 말하면 공격자는 사람들의 심리를 파악해 최대한 자신이 원하는 목적을 달성하는 기법입니다.

이메일 서비스, 소셜 네트워크 서비스 등을 이용하죠. 따라서 회사에서는 내부 임직원을 대상으로 보안 의식 진단 같은 프로젝트를 진행해 실제 이런 공격에 대해 위험성을 인식하게 해주곤 한다고 합니다.
이러한 사회공학적 공격 기법에 어떤 도구가 사용되는지 살펴보도록 하겠습니다.


6.3.1 SET : 사회공학 기법



SET(Social Engineering Toolkit)은 말그대로 사회공학적 이론을 이용한 도구 모음입니다.

메타스플로잇과 연결돼 있으며, 여러 취약점 환경을 자동으로 구성되게 해주기 때문에 사용하기 편합니다.

이번에 이 도구로 facebook과 연계하여 사용자의 ID와 패스워드를 갈취하는 것을 실습해보겠습니다.



맨처음 apache2 서버를 리스타트 후 setoolkit 명령을 입력해 도구를 실행해줍시다.


# service apache2 restart

# setoolkit


그럼 setoolkit 의 메뉴가 6개가 나오는데 맨 첫번째 메뉴인 1) Social-Engineering Attacks 을 선택해줍니다.


set> 1 


그다음 메뉴 2) Website Attack Vectors 선택


set> 2 


그다음 메뉴 3) Credential Harvester Attack Method 선택


set:webattack > 3 


그다음 메뉴 2) Site Cloner 선택


set:webattack > 2 


그다음 IP 셋팅을 하라는 문구가 나옵니다. 자신의 칼리리눅스 IP적고 엔터 쳐줍니다.


set:webattack> IP address for the POST back in Harvester/Tabnabbing: <칼리리눅스 IP>


다음 클론 URL을 셋팅하라는 문구가 나옵니다. 저 같은경우 https://www.facebook.com 을 넣었습니다.


set:webattack> Enter the url to clone: <복사 하고싶은 사이트 URL주소>







자 모든 준비는 끝났습니다.

이제 클론된 /root/.set/index.html 을 /var/www/html 에 넣으시고 

브라우저에 공격자아이피를 넣게되면 facebook 로그인 페이지가 나오게됩니다.





이제 저 이메일과 비밀번호 텍스트필드에 1234/1234 로 넣고 로그인해보겠습니다.





가짜 웹 페이지에선 본인이 정확하게 아이디와 비밀번호를 쳤어도 무조건 진짜 facebook.com 홈페이지로 연결됩니다. 실제론 그때부터가 진짜 로그인이죠.


한마디로 setoolkit은 페이스북의 로그인페이지만을 카피하고 그곳에 입력값을 넣고 로그인을 해버리면 위 사진처럼 공격자에게 정보들이 노출되버립니다. 그리고 로그인과 동시에 진짜 페이스북 페이지로 연결되는거죠.






여기서 끝이 아니라 컨트롤 + C 로 종료하게 되면 여지껏 입력했던 값들에 대해 report가 저장됩니다.







이상으로 심화 공격 부터 사회공학적 공격까지 보았는데요.

알면알수록 신기하기도 하면서 위험하단 생각도 많이 들게되네요.

다들 아시다시피 절대로 허가되지않은 장소에서 실행하시면 안되는 것 잊지마시고 ㅎㅎ

저도 실제로 하면서 많이 배워가는 느낌입니다.


다음 7장에선 침투 심화 단계인데요. 전체적으로 한번 침투해둔곳을 번거롭지않게 언제든 셸을 딸수 있는 백도어 관련된 공격에 대해 보겠습니다. 

다들 읽느라 수고하셨고 다음에 뵙겠습니다~

반응형

'Penetration testing > Kali Linux' 카테고리의 다른 글

8장 패스워드 크랙 진단  (0) 2017.07.03
7장 침투 심화 공격 단계  (0) 2017.07.03
5장 취약점 평가 단계  (0) 2017.05.26
칼리 리눅스 설치 후 초기 설정  (0) 2017.05.21
4장 정보 수집 상세 단계  (0) 2017.05.19
Comments