Hoin's security

[4주차] 모의해킹 실습 본문

스터디/모의해킹

[4주차] 모의해킹 실습

Hoin.s 2023. 11. 1. 05:11

가상머신은 VMware로 진행하였고 Kali Linux, Metasploitable2, Windows XP, Windows 8.1이 설치가 완료 된 상태이다.

이 모든 환경이 구축되어있다는 전제 하에 실습을 진행하겠다.

 

Nessus는 가장 유명한 취약점 분석 툴 중 하나이다.

우리가 사용할 것은 무료 버전인 Nessus Essentials이다. Nessus Essentials 칼리 리눅스 환경에서 다운로드 한다.

debian amd64 버전 파일을 다운받고 Save File을 선택하면 자동으로 Downloads 폴더에 저장된다.

Nessus 설치를 시작하는데 root 계정으로 진입한 뒤, 다음과 같이 입력한다.

root@kali~# cd /home/kali/Downloads
root@kali:/home/kali/Downloads# ls
root@kali:/home/kali/Downloads# ls -al
root@kali:/home/kali/Downloads# dpkg -i [Nessus 파일이름.deb]

차례대로 위 커맨드를 입력하면 설치가 진행된다.

 

root@kali~# service nessusd status
root@kali~# service nessusd start
root@kali~# netstat -tnlp

위와 같이 입력하여 nessusd가 실행되어있는지 확인한다. 

nessus에 접속해서 로그인해주고 Nessus Essentials를 시작시킨다.

 nessusd가 실행되어 있는지 확인하면 active(running)이라고 뜨는 것을 확인할 수 있다.

 

Nessus를 이용해 Metasploitable2, WindowsXp, Windows8.1 환경의 취약점들을 분석해 볼것이다.

우선, Kali에서 nessusd가 활성화 되어있는 지 확인하고, inactive 상태라면 nessusd를 시작해준다.

root@kali:~# service nessusd status
root@kali:~# service nessusd start

그러나 New scans 버튼이 비활성화 되어있고 무슨 일인지 인터페이스 페이지도 상태가 이상하다...

2-4 취약점 둘러보기

취약점 둘러보기

1) Metasploitable2 취약점

Metasploitable2는 셋 중 가장 취약한 환경인 만큼, 제일 많은 수의 취약점이 발견되었다.

[Critical]Bash Remote Code Execution : 커맨드 인젝션에 취약한 Bash를 운영하는 원격 호스트이다. 시스템의 환경에 따라, 공격자는 원격으로 임의의 코드를 실행할 수 있다.

→ Bash를 업데이트하여 취약점을 해결할 수 있다.

※ Bash는 쉘(명령어 처리기)의 일종으로, # 형태의 프롬프트를 가진다.

[Critical]Bind Shell Backdoor Detection : 공격자가 원격 포트를 통해 인증 없이 연결을 하고, 커맨드를 직접 전송하여 사용할 수 있다.

→ 원격 호스트가 손상되었는지를 확인하고, 만약 필요하다면 시스템을 재설치한다.

  • 백도어(Backdoor)란?
    • Backdoor는 Trapdoor라고도 하는데, 시스템 설계자나 관리자가 고의로 남긴 시스템의 보안 허점이다. 본래 목적은 디버깅 시 개발자에게 인증 및 셋업 시간을 단축하기 위한 채널로 사용하기 위함이지만, 비양심적인 프로그래머가 악의적으로 사용할 경우 상당히 위험할 수 있다.

[Critical]VNC Server 'password' Password : 원격 호스트에서 구동되는 VNC 서버는 약한 패스워드가 설정되어있다. 암호는 'password'이며, 이를 통해 로그인 및 서비스 제어를 할 수 있어 악용될 수 있다.

→ VNC 서버에 더 강력한 패스워드를 설정한다.

[INFO]RMI Registry Detection : 원격 호스트가 Java RMI(자바 원격 메소드 호출) 시스템에서 단순한 이름의 원격 개체를 등록하고 검색하는 부트스트랩 명명 서비스 역할의 RMI 레지스트리를 구동한다.

※ Java RMI : 자바로 다른 머신간에 객체끼리 메시지를 교환할 수 있는 환경을 실현하기 위한 방법.

2) Windows XP 취약점

[Critical]MS03-026 : 윈도우 RPC 서비스에서 TCP/UDP 135 포트 상의 DCOM RCP인터페이스를 통해 도용될 수 있는 버퍼 오버플로우 취약점을 이용한다. 이 취약점을 통해 공격자는 SYSTEM 권한을 가지고 원격으로 코드를 실행할 수 있다.

→ Microsoft에서 배포한 패치를 적용한다.

[Critical]MS08-067 : 원격 윈도우 호스트는 부적절한 RPC 요청의 처리로 인해 '서버' 서비스의 원격 코드 실행 취약성의 영향을 받는다. 공격자는 조작된 RPC 요청을 통해 SYSTEM 권한으로 임의의 코드를 실행할 수 있다.

→ Miscrosoft에서 배포한 패치를 적용한다.

※ 이 취약점은 이번 과정 내에서 우리가 계속 사용하게 될 것이므로 기억해두자!

3) Windows 8.1 취약점

[HIGH]MS17-010 : Microsoft Server Message Block 1.0(SMBv1)에는 여러 원격 코드 실행 취약성이 있는데, 이는 특정 요청을 잘못 처리하며 발생하게 된다. 인증되지 않은 원격 공격자는 특수하게 조작된 패킷을 통해 이러한 취약성을 이용하여 임의 코드를 실행할 수 있다.

2017/04/14에 Shadow Broker로 알려진 이들이 몇가지 취약점을 공개하였다. ENVERNALBLUE, ENVERCHAMPION, ENVERNALSYERGY가 그것이다. WannaCry / WannaCrypt는 ENVERNALBLUE exploit을 활용한 랜섬웨어 프로그램이며, EvernantRocks는 7가지 EQUATION GROUP 취약점을 활용한 웜이다. Petya는 마이크로소프트 오피스의 취약점인 CVE-2017-0199를 먼저 활용한 뒤 ENVERTBLUE를 통해 전파하는 랜섬웨어 프로그램이다.

→ Miscrosoft에서 배포한 패치를 적용한다.


Exploitation

1) 용어

(1) Exploit(n) : 컴퓨터 소프트웨어나 하드웨어에 의도치 않은 행동이 발생하도록 취약점(vulnerability)를 이용하는 소프트웨어의 한 종류.

즉, 컴퓨터 시스템에의 공격을 뜻한다.

→ 결과적으로는 권한을 상승시켜 시스템의 제어권을 획득한다.

※ Exploit(v) : 성공적으로 공격을 수행하는 행위

(2) Payload : 맬웨어(malware)의 일종으로, exploit 과정에서 이용된다.

  • 타겟에서의 shell을 제공
  • 타겟 컴퓨터에 저장된 패스워드에 액세스
  • 타겟에 있는 백도어에 액세스

등이 가능하다.

일반적으로 어셈블리어로 구성되어있고, 플랫폼에 의존적이다.

ex) Windows에서 작성된 payload는 Linux에서 사용할 수 없을 수 있다.

(3) Exploit Ranks

  • Excellent : exploit이 결코 서비스와 충돌하지 않는다.
  • Great : 버전체크 다음 자동으로 적절한 타겟을 검출해낸다.
  • Good : 일반적인 케이스에서 좋은 결과를 낸다.
  • Normal : 믿을만한 수준. 그러나 자동으로 타겟을 검출해내지는 못한다.
  • Average : 썩 괜찮은 수준의 exploit 상대는 아니다.
  • Low : exploit에 성공하기는 거의 불가능하다.
  • Manual : exploit을 수행하기에 불안정하거나 어렵다. 기본적으로 DoS이다.

2) Risks

일반적으로 Exploit과 Post-Exploit 과정에서 Risk가 가장 크다.

  • 어플리케이션끼리의 충돌
  • 서버 다운
  • 성능 손실
  • 구성(구조) 변화
  • 기밀정보 누설
  • 잊혀진 백도어

위와 같은 리스크들을 완화하기 위해서는 다음에 주의해야한다.

  • 현재 기술로 대체할 수 있는 오래된 서비스는 제외한다
  • 시간날 때 critical system을 테스트해본다.
  • 테스트 환경에서 먼저 Pen Test를 진행해본다
  • Pen Test 전에 모니터링 환경을 만들어둔다.
  • 자동 테스트를 다시 조정한다
  • clean-up 플랜을 세운다.

3) Exploit Databases

: Pen Test를 위해 개발된 취약한 소프트웨어와 public exploit의 저장소

가장 유명한 exploit database는 'www.exploit-db.com'이다. 이는 CVE-Compatible Database 이다.

※ CVE : 정보 보안 취약점 표준 코드(Common Vulnerabilities and Exposures). CVE는 알려진 취약점을 식별하는 방식을 표준화하는 데 목적이 있다.

Manual Exploitation

exploit database를 이용해 exploit을 진행해보자.

다음과 같은 순서로 진행된다.

  • MS03_026 취약점을 위해 개발된 exploit 코드를 검색한다.
  • exploit 코드를 컴파일한다
  • exploit을 시행한다.
  • 타겟 시스템에 shell을 가진다.

Kali를 실행해 웹브라우저에서 exploit-db.com으로 접속한 뒤 검색창에 ms03_026을 검색한다.

그리고 H D Moore에 의해 개발된 exploit을 선택한다.

Download Code를 눌러 소스코드를 다운받고, Kali 내에 저장한다.

터미널 창을 열어 다운받은 코드를 컴파일해준다.

root@kali:~# cd /home/kali/Downloads
root@kali:/home/kali/Downloads# ls -al
root@kali:/home/kali/Downloads# gcc 66.c -o 66 //66.c는 다운받은 파일
root@kali:/home/kali/Downloads# ls -la
root@kali:/home/kali/Downloads# ./66
root@kali:/home/kali/Downloads# nmap -sV -O [타겟IP] --top-ports 10

※ 타겟 시스템은 Windows XP로 한다.

타겟 ID를 얻기 위해서 Windows XP의 [내 컴퓨터]-[속성]을 확인한다.

root@kali:/home/kali/Downloads# ./66
root@kali:/home/kali/Downloads# ./66 [타겟 ID] [타겟IP]

그러나 타겟 IP를 잘못입력했는지 뭔지 Id는 잘 한거 같은데 오류가 난다. 더 이상의 진행이 불가하므로 여기서 마친다.

 

+추후에 오류 원인 파악 후 보완하여 업로드 하겠다.