Hoin's security

[3주차] 모의해킹 스터디 정리 본문

스터디/모의해킹

[3주차] 모의해킹 스터디 정리

Hoin.s 2023. 10. 4. 14:40

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을 가진다.
  •  

Exploitation Framework

앞에서와 같이 manual하게 exploit을 수행하기에는 여러 어려움이 존재한다.

exploit 코드를 직접 찾고, 그 코드를 컴파일 한다. 또, 에러나 버그가 생기면 직접 수정을 해야하고, 알맞은 exploit을 수행하기 위해 타겟 시스템의 버전을 찾아봐야 할 수도 있다. 그리고 exploit 코드가 안정적이지 못할 수 있고, 결정적으로 한번의 exploit에 하나의 payload밖에 사용하지 못한다.

그렇기에, 우리는 Exploit Framework를 사용할 것이다.

Exploit Framework는 Manual Exploitation의 어려움들을 해결해준다.

그 종류로는 Core Imapct, Immunity Canvas, Metasploit 등이 있는데, 우리는 Metasploit을 사용한다.

Exploitation with Metasploit

우리는 Metasploit을 이용해 컴퓨터 시스템의 취약점을 테스트해볼 수도 있고, 원격 시스템에 침입할 수도 있다.


1. pass the Hash(패스더해시)란?

: Password에 대한 hash값을 사용하는 환경(NTLM/LM 인증 프로토콜을 사용하는 환경)에서, 획득한 hash 값을 사용하여 인증을 통과하는 공격 (사용자의 실제 Password는 몰라도 됨)

1) Mechanism

  • NTLM/LM 인증을 사용하는 서버/서비스는 해시로 암호를 제공
  • cleartext 암호는 원격 서버를 전송하기전에 해시로 전환
  • 인증을 완료하는데에 Cleartext 암호는 필요하지 않음
  • 기능적으로 해시는 원래 암호와 동일

→ Complete network 인증올 완료하는데에는 hash만 있으면 된다.

2) Pass-the-Hash 공격 과정

  1. 시스템에 침투
  2. 시스템의 보호된 자원에 접근할 수 있는 권한 획득
  3. 메모리 상에 있는 Password Hash값 수집
  4. 새로운 logon session을 생성하여 획득한 hash 값으로 접속

→ LM/NTLM 인증 프로토콜을 사용하는 Network의 특정 시스템에 침투한 후에는, Network에 연결된 다른 시스템에 속한 모든 시스템에도 침투할 수 있다.(보통 사용자는 Password를 플랫폼마다 바꾸지 않음)

우리는 'Pass the Hash' 공격을 하기위해 다음과 같은 모듈을 사용할 것이다.

  • Metasploit PsExec

→ PSExec 모듈은 암호학적 개인정보를 이미 알고있는 특정 시스템에 대한 접근을 얻기 위해 침투테스터에 의해 사용된다.

  • Metasploit PsExec를 사용하기 위해 필요한 것
  • 타겟 IP
  • 타겟 시스템의 username
  • Password Hash(or Password)
  • Administractive Shares

우리는 가상환경에 설치한 winXP, windows 8 에 대한 대다수의 정보 가지고 있다. win xp와 windows 8을 PsExec 모듈을 사용하여 해킹할 것이다.

그렇다면 가장 중요한 Hash 암호는 어떻게 모을 것인가?
→ 미터프리터를 사용한다!

2. Meterpreter

winXP의 해쉬 암호를 모을 때 우리는 'Meterpreter' 라는 Payload의 모음을 사용할 것이다. (미터프리터 내장기능에 pass the hash 공격이 포함되어있다.)

1) 미터프리터란?

: Metasploit Framework에 포함되어 있는 Payload 중의 하나로, 특별한 기능을 제공한다. Metasploit의 기능을 활용해 대상 시스템을 손상시킬 수 있는 프레임워크의 확장기능이다.

2) 미터프리터의 특징

  • 다양한 후속 공격을 지원, 인메모리 DLL injection stager을 사용
  • 디스크를 건드리지 않음

→ 프로세스 인젝션 시 새로운 프로세스 생성하지 않음, 기존에 있는 프로세스에서 실행

  • reflective DLL injection 을 사용
  • 내장 기능에는 권한 상승, Pass the Hash, 이벤트 로그, 인코그니토, 원격 데스크톱 접근, 패킷 스니핑, 피버팅 등이 있다.

→ 이외에 더 많은 모듈들은 help 명령어를 통해 확인 할 수 있다.


Post-Exploitation

1. 후속 공격(Post-Exploitation)이란?

: 세션이 오픈된 후 일어나는 모든 행동을 일컫는다.

→ exploit을 하고 난 후 정보를 계속해서 모으는 것은 매우 중요하다. 이런 정보들이 다른 시스템을 공격할 때 도움을 줄 수도 있기 때문이다.

시스템을 해킹하고 난 후 해야하는 행동

  1. Persistence ( 시스템에 지속적인 접근 유지)
  2. Username과 Password Hashes 를 모은다
  3. Password Cracking
  4. 중요한 data 수집

따라서 exploit에 성공한 system에 지속적인 접근을 유지하는 것은 매우 중요하다.


Meterpreter Extensions

미터프리터 세션에 다양한 post-exploit session 명령어들이 있다.

포스트 익스플로잇 단계에서 어떤 용도로 사용되는 지에 따라 명령어들이 다음과 같이 분류 된다.

1) Stdapi

  • 파일 시스템
  • 시스템
  • 사용자 인터페이스

2) Priv

  • 권한 상승
  • 패스워드 데이터베이스
  • 타임스톰프

3) Incongnito

4) Sniffer

5) Core

Stdapi, Priv, Core 는 따로 load 해주지 않아도 meterpreter session이 열리면서 자동으로 load 되기 때문에 사용하기 전에 load 해 줄 필요가 없다.

Core Extension

→ 미터프리터 세션을 관리하는데 사용된다.

  • help : 도움말
  • sessinos : 세션 관리
  • background : 현재의 미터프리터 세션을 MSF console prompt 로 이동
  • migrate : 서버를 다른 프로세스로 옮김
  • channel : 활성화된 채널의 목록을 제공하거나 제어(interact, read, wrtie, close)

→ channel 이란 클라이언트와 서버사이에 존재하는 데이터 이동통로를 말한다.

  • load | use : meterpreter extension을 load하거나 사용
  • run : 미터프리터 스크립트나 post 모듈 실행

우리는 sessions 명령어와 background 명령어를 이미 앞에서 사용해보았다.

Stdapi Extension

  1. file system commands

→ 타겟 시스템의 파일 시스템 관리

  • cat : 출력창에 파일의 내용물을 출력
  • cd / lcd : 폴더 이동
  • pwd / lpwd : 현재 디렉토리 출력

→ pwd는 타겟시스템의 lpwd 는 local system의 현재 디렉토리

  • upload / download : 파일 또는 디렉토리를 업/ 다운로드
  • ls : 파일 목록 출력
  • rm : 특정한 파일 제거
  • search : 파일 검색
  • system commands

→ 타겟 시스템에서 실행되는 시스템 관리

  • execute : 명령어 실행
  • getpid / getuid ": 현재 프로세스의 식별자/서버를 실행시키고 있는 사용자를 얻음
  • shell :
  • sysinfo : 현재 공격 대상에 대한 정보를 얻는다.
  • ps : 실행되고 있는 프로세스 목록 출력
  • kill : 현재 프로세스 종료
  • UI &Webcam commands

→ 웹캠으로부터 keystroke, screenshot, snapshot 얻음

  • idletime : 공격대상 pc가 몇 초동안 가동되지 않았는지 출력
  • screenshot : 활성화된 데스크탑의 스크린샷 찍음
  • record_mc : x초간 기본 마이크를 통해 오디오 녹음
  • webcam_list : 웹캠 리스트 나열
  • webcam_snap : 웹캡으로부터 스냅샷 가져옴
  •  

4) Password Cracking

패스워드 크래킹에는 3가지 종류가 있다.

(1) Brute Force Attacks

  • 모든 가능한 수단이 전부 시행됨
  • 패스워드 길이를 아는 것이 좋다. (패스워드 길이가 길수록 올바른 패스워드를 찾는 데 걸리는 시간이 기하급수적으로 늘어나기 때문)

(2) Dictionary Attacks

  • 이미 만들어져 있는 워드리스트를 사용
  • 공격툴들이 다양한 방법들을 이용 - 대문자/소문자, 숫자를 앞뒤로 붙이기 등

(3) Rainbow Table Attacks

  • 미리 컴파일된 잠재 해쉬들의 리스트
  • 빠르다
  • RAM용량을 많이 사용한다

Password Hash

  • Windows Hash※LM Hash : 패스워드를 저장하는 데 사용되는 매우 약한 단방향 기능.
  • UserName:UserID:LM Hash:NTML Hash:::
  • Linux Hash/etc/shadows 파일들은 실제 패스워드를 암호화된 포맷으로 저장하는데, 해쉬나 사용자 계정의 정보를 담고 있다.
  • UserName:�������ℎ�Salt$Hash:Last Changed:Min:Max:Warn:::

패스워드 크래킹 툴

HYDRA

  • 온라인 패스워드 크래킹 툴 : 패스워드 해쉬에 직접 액세스하지 않고, 웹의 형태로 사용자이름과 패스워드를 요청한다. 매우 느리다.

Cain & Abel

  • 패스워드 복원 툴. Microsoft OS에서 사용 가능.
  • Brute Force Attack, Dictionary Attack, Rainbow Attack

John the Ripper

  • 가장 유명한 패스워드 크래킹 툴 중 하나. Unix, Windows, OpenVMS 등에서 사용 가능.
  • Brute Force Attack, Dictionary Attack, Rainbow Attack
  • 수많은 패스워드 크래커들을 하나의 패키지로 합친다.
  • 패스워드의 해쉬 타입을 자동으로 탐지한다.
  • 세 가지 버전이 존재. (Free, Pro, Community-Enhanced)