본문 바로가기

IT Security/HACKABLE

[Two Greedy] MiMikatz 를 활용한 Windows 계정탈취

가상으로 구축된 환경 외에 시도하는 것은 엄연히 불법입니다. 모든 책임은 개개인에게 있으니 조심해주세요

안녕하세요 Retain0입니다. 이번 시간에 배워볼 것은 Mimikatz라는 Tool 을 활용한 Windows 계정을 탈취해보도록 하겠습니다. Mimikatz는 windows의 계정에 대해 중요한 정보를 모조리 빼올 수가 있는 위험한 도구입니다. 암호를 제외한 NTLM 해시값, PIN , 커버로스 티켓값 등 시스템에 대한 정보를 빼앗길 수 있는데요

mimikataz의 경우 릴리스가 자주 나오고 있습니다. 동작되는 버전은 XP, 2003, Vista, 2008, 7, 2008R2, 8, 2012의 x86/x64 버전에서 되었으나 최근 Windows10 버전도 동작이 되고 있습니다.

※최근 win10 버전에서는 실시간 바이러스 보호가 꺼져 있어야 실행되며, Mimikatz 의 예방을위해 일부 레지스트리값도 수정이 되어있음

① Mimikatz

설치는 하단 링크를 참조하셔서 다운로드하시면 되겠습니다.

사진 1 20190813버전 설치

사진 2 설치된 폴더(windows7)

 

사진 3 관리자 권한 실행

사진 3 을 보시면 cmd에서 경로를 타고 올라가 실행하셔도 상관없지만 권한이 필요한 경우가 있어 마우스 우 클릭 --> 관리자 권한으로 실행하면 됩니다.

사진 4 mimikatz 실행 화면

mimikatz 실행하면 프롬프트 커서가 깜빡일 겁니다. 명령어 " privilege::debug "를 입력하여 해당 pc의 계정 정보를 도출시킬 수 있는지 확인해봅니다.

사진 5 로그인된 계정 정보

sekurlsa::logonpasswords

(사진 5) 디버깅이 완료되었으니 이제 메모리에 저장되어 있는 사용자의 정보를 가져와봅시다.

password 부분이 null 값으로 도출된다면 레지스트리 값이 설정되어 있을 수도 있다.

regedit에서 HKEY_LOCAL_MACHINE / SYSTEM /currentControlset / Control / Securityproviders / WDigest / UseLogonCredential ( DWORD) 값이 0으로 되어 있다면 " 1 "로 바꾸고 다시 해보자

"UseLogonCredential" 은 windows8.1 / 2012 R2 서버 이상부터는 값을 없앴으므로 만들면 된다.

※현재 로그인한 계정, 로그인되어 있는 관리자 계정 정보를 가져올 수 있게 접속이 된 상태여야함

사진 6 SAM 정보

lsadump::sam

(사진 6) 여러 계정의 정보를 가져올 수도 있습니다.

sam 파일이란 " 로컬 계정과 그룹의 정보가 들어있음 "

NTLM 해시 란 " challenge(토큰) / response(응답)라는 요청과 응답 방식을 사용하여 인증하는 값입니다. windows NT 제품군의 모든 구성원이 사용하고 윈도 네트워크의 인증에 가장 많이 사용되는 절차입니다. 해시 값은 패스워드와 다르게 일 방향(단방향) 성질을 나타내고 있습니다. 하지만 그 값을 알 수가 있다면 원격이나 사용자를 인증 함에 있어 쉽게 우회할 수가 있습니다. 이러한 눈으로 봐선 알 수 없는 이 값들을 Crack 할 수가 있는 " hashcat " 도구가 있는데 이건 추후 포스팅에 포함시켜서 올리도록 하겠습니다.

사진 7 민감정보 획득

lsadump::secrets

(사진 7)여러 민감정보들을 확인하실 수가 있습니다.

<이외에 여러 사용 가능한 명령어들>

CRYPTO :: certificates – 인증서 목록 / 내보내기
KERBEROS :: Golden – 황금 /은 / 신탁 티켓 만들기
KERBEROS :: List – 사용자 메모리에 있는 모든 사용자 티켓 (TGT 및 TGS)을 나열합니다. 현재 사용자의 티켓 만 표시하므로 특별한 권한이 필요하지 않습니다.“klist”기능과 유사합니다.
KERBEROS :: PTT – 티켓을 전달하십시오. 일반적으로 도난당하거나 위조된 Kerberos 티켓 (황금 /은 / 신탁)을 주입하는 데 사용됩니다.
LSADUMP :: DCSync – DC에게 개체를 동기화하도록 요청합니다 (계정의 암호 데이터 가져오기). DC에서 코드를 실행할 필요가 없습니다.
LSADUMP :: LSA – LSA 서버에 SAM / AD 엔터프라이즈 (일반, 즉시 패치 또는 인젝션)를 검색하도록 요청하십시오. 도메인 컨트롤러 또는 lsass.dmp 덤프 파일에서 모든 Active Directory 도메인 자격 증명을 덤프 하는 데 사용합니다. 매개 변수 / name :“/ name : krbtgt”를 사용하여 krbtgt와 같은 특정 계정 자격 증명을 얻는 데 사용됩니다.
LSADUMP :: SAM – SysKey가 레지스트리 또는 하이브에서 SAM 항목을 해독하도록 합니다. SAM 옵션은 로컬 SAM (Security Account Manager) 데이터베이스에 연결하고 로컬 계정의 자격 증명을 덤프 합니다. Windows 컴퓨터에서 모든 로컬 자격 증명을 덤프 하는 데 사용됩니다.
LSADUMP :: Trust – LSA 서버에 신뢰 인증 정보 (일반 또는 즉시 패치)를 검색하도록 요청하십시오. 연결된 모든 트러스트 (도메인 / 포리스트)에 대한 트러스트 키 (암호)를 덤프 합니다.
MISC :: AddSid – 사용자 계정에 SIDHistory에 추가합니다. 첫 번째 값은 대상 계정이고 두 번째 값은 계정 / 그룹 이름 (또는 SID)입니다. 2016 년 5 월 6 일부터 SID : modify로 이동
MISC :: MemSSP – 악의적인 Windows SSP를 주입하여 로컬로 인증된 자격 증명을 기록합니다.
MISC :: Skeleton – 도메인 컨트롤러의 LSASS 프로세스에 스켈레톤 키를 주입합니다. 이를 통해 Skeleton Key 패치 DC에 대한 모든 사용자 인증은 "마스터 비밀번호"(일명 Skeleton Keys)와 일반적인 비밀번호를 사용할 수 있습니다.
PRIVILEGE :: Debug – 디버그 권한을 얻습니다 (이 또는 로컬 시스템 권한은 많은 Mimikatz 명령에 필요합니다. 
SEKURLSA :: Ekeys – Kerberos 암호화 키 나열
SEKURLSA :: Kerberos – 인증된 모든 사용자 (서비스 및 컴퓨터 계정 포함)에 대한 Kerberos 자격 증명을 나열합니다.
SEKURLSA :: Krbtgt – 도메인 Kerberos 서비스 계정 (KRBTGT) 암호 데이터 가져오기
SEKURLSA :: LogonPasswords – 사용 가능한 모든 제공자 신임 정보를 나열합니다. 일반적으로 최근에 로그온 한 사용자 및 컴퓨터 자격 증명을 보여줍니다.
SEKURLSA :: Pth – 패스 해시 및 오버패스 해시
SEKURLSA :: Tickets – 사용자 계정 및 로컬 컴퓨터의 AD 컴퓨터 계정으로 실행되는 서비스를 포함하여 최근 인증된 모든 사용자에 대해 사용 가능한 모든 Kerberos 티켓을 나열합니다. kerberos :: list와 달리 sekurlsa는 메모리 읽기를 사용하며 주요 내보내기 제한을 받지 않습니다. sekurlsa는 다른 세션 (사용자)의 티켓에 액세스할 수 있습니다.
TOKEN :: List – 시스템의 모든 토큰을 나열합니다
TOKEN :: Elevate – 토큰을 가장합니다. 권한을 SYSTEM (기본값)으로 높이거나 상자에서 도메인 관리자 토큰을 찾는 데 사용됩니다.
TOKEN :: Elevate / domainadmin – 도메인 관리자 자격 증명으로 토큰을 가장합니다

◆대응 방안

(1) 최신 버전의 OS 버전을 사용해야 하며 " 실시간 탐지 기능 " 은 활성화시켜 둠으로써 악성 프로그램으로 탐지가 되는 것이 있다면 경고 문구가 아닌 " 격리 " 시킬 수 있도록 해야 함

(2) 디버그 권한 비활성화

(3) 관리자의 암호를 고유하게 설정해둬야 함

(4) 이외에도 시스템에서 구동해봄으로써 방어체계가 잘되어 있는지 확인

Mimikatz install location : https://github.com/gentilkiwi/mimikatz

Refer to : https://adsecurity.org/?page_id=1821


이번 실습은 여기까지만 해보도록 하겠습니다. " Mimikatz "의 경우 2011년 도에 네덜란드에서 실제 공격자가 활용해서 해킹했던 사건이 있었습니다. 해당 기업은 파산했다는 기사 내용이 있을 만큼 " Mimikatz "는 Windows라는 플랫폼에서 굉장히 조심해야 할 툴로 남아 있습니다. Mimikatz의 생성 목적이 " 보안 " 을 위해 만들어진 프로그램이라 microsoft 사도 mimikatz의 영향력을 잘 알고 그에 따른 보안 대책을 강구했을 것으로 보입니다.

하지만 아직도 낮은 버전의 Windows를 사용하는 유저들이 아직 몇몇 본 적이 있었는데 (최근 windows7 서비스 종료됨) 그런 유저들을 타깃으로 원격접속 후 mimikatz 가 구동이 되게 된다면 해당 사용자 pc 장악하는 것은 시간문제가 되겠죠. 그럼 다음시간에 뵙도록 하겠습니다. 감사합니다