목록KISA 사이버 보안 훈련 (60)
작은 메모장
이번 목표인 hwp문서 분리된 환경임을 믿고 분석을 위해 한번 실행 정상적인 이력서 파일처럼 보이나, 한번 문서를 연것으로 이 환경은 감염됨 분석을 위해, WinPrefetchView프로그램을 사용해 HWP 프로세스와 동시에 실행된 프로세스를 탐색 HWP.exe 프로세스가 보임 이는 한글 프로그램으로 일반적인 문서 편집 프로그램임 이를 기준으로 의심스러운 프로그램이 실행되었는지 확인 gbb가 실행되었음 이는 ghostscript가 실행되었다는 것으로, 해당 문서에 PostScript가 실행되었음을 의미 실제로 제목 옆에 알아차리기 힘들게 조그마한 스크립트를 삽입한 것을 볼 수 있음 이를 통해 공격자가 악성 스크립트를 HWP 파일 안에 넣어 공격을 시도하였음을 알 수 있음 트리아지 PostScript가 주..
이번 목표인 HWP 문서 file 명령어를 사용하여 문서를 분석 원래 리눅스에서 사용가능한 명령어인데 환경변수를 이용하여 윈도우 상에서 사용 가능하게 구성 분석한 결과 CDF v2 Document 형식 Compound Document Format의 약자로 Object Linking and Embedding, OLE라고도 불림 어떤 데이터가 들어가 있는지 디렉토리 항목을 확인 3개의 스토리지와 9개의 스트림이 존재 이중 Scripts 스토리지 아래에 DefaultJScript 스트림을 분석 8번째 섹션에 DefaultJScript가 존재 이를 파일화하여 저장 zlib 압축되어 있을것이므로, 압축 또한 해제 압축 해제가 정상적으로 된 모습 스크립트 분석 상당히 심플한 구성으로 되어있는 모습 가장 중요한 On..
시작하기 앞서.. HWP 5.0부터는 컴파운드 파일 포멧이라는 규격을 사용 파일의 첫 8바이트가 D0 CF 11 E0 A1 B1 1A E1으로 시작 파일 헤더 스트림에 파일 인식 정보인 "HWP Document File"이 존재 이번 목표인 HWP 문서 분석하기 위해 해당 파일을 16진수로 변환 파일의 버전을 알아보기 위해 PowerShell명령어를 사용 파일의 첫 8바이트가 D0 CF 11 E0 A1 B1 1A E1으로 시작 파일 인식 정보인 "HWP Document File"또한 찾아봄 얘도 있음 즉, 이 파일은 HWP 5.0이상임 악성문서 트리아지 매크로 공격이 주로 시행되는 곳은 Scripts 스토리지에서 발생함 여기엔 2개의 스트림이 존재하는데, 스크립트 버전을 담는 JScriptVersion ..
그래서 이거 어떻함? zlib으로 압축했으니, 다시 압축해제하면 됨 압축을 해제하는 python코드의 일부 if문으로 파일의 데이터를 받아오고 압축해제한 데이터를 다시 쓰는 코드형태 인자값을 알맞게 주어 압축해제를 진행 정상적으로 압축이 풀린 모습을 볼 수 있음 스크립트 분석 PostScript는 stack형 스크립트 언어로, 일반적인 프로그래밍 언어와 상당히 다른 문법을 보임 보통 프로그래밍 언어에서, 변수 a를 1로 지정하고 싶다면 int a = 1 인 기본적인 언어를 떠올림 하지만 PostScript는 다르게 동작함 GS>/a GS1 GSdef 이 코드는 PostScript의 인터프리터인 ghostscript의 a = 1을 선언하는 코드임 앞서 ghostscript는 stack형 언어라고 이야기함 ..
하나의 예시를 보자 일반적인 한글 파일 그러나 이를 실행하게 되면 윈도우 시작 프로그램에 이상한 파일이 생긴것을 확인 가능 또, 문서 상단 알수없는 크기의 영역이 잡힌 것을 확인 가능 이것이 바로 PostScript로 공격을 시행한 것임 PostScript? 어도비에서 만든 언어 각종 고화질 벡터 이미지를 표현 가능 어떻게 악성 코드가 생긴 것? 악성 PostScript가 주입된 HWP문서를 열람하게 되면 HWP 프로세스가 실행 실행된 HWP 프로세스는 문서를 파싱하여 사용자에게 뷰로 보여줌 HWP는 문서를 뷰로 처리하는 과정에서, PostScript가 있는지 확인 있다면, ghostscript를 실행 함 (ghostscript는 PostScript를 해석하는 인터프리터) 실행된 ghostscript는 ..
악성 HWP 문서의 유형 - Post Script 문서 내에 ".EPS" 혹은 ".PS"확장자를 가진 파일이 존재, 해당 파일 안에 악성 포스트 스크립트가 존재 - Exploit 문서 내에 쉘 코드 바이너리가 포함, Exploit에 의해 임의로 동 - Binary File Embed 문서 내에 PE, SHF, OLE등의 포맷의 파일이 존재 - Macro 문서 내에 악성 자바스크립트 코드를 포함한 스트림이 존재 Post Script 일반적으로 포스트 스크립트는 암호화 되어 있으며, 반복문을 통해 복호화 작업을 수행 복호화가 끝난 스크립트는 "프로세스 인젝션을 통한 쉘코드 삽입" 혹은 "파일시스템 조작"등의 공격을 시행 Exploit 데이터가 무질서함, NOP(No Operation)코드가 존재할 수 있음,..
디버깅을 수행하기 위해 32비트 디버거를 실행 일반 프로그램인 메모장을 실행하였음 쉘코드는 일반 프로그램의 메모리 공간안에 메모리 공간을 injection하므로, 이를 그대로 수행 데이터상의 변화는 없지만 메모리 공간이 할당된 상태 여기에 쉘 코드 자체를 주입시킴 성공적으로 주입이 되었음 단, EIP레지스터는 여전히 노트패드 프로그램의 시작점을 가리키고 있음 그러나 쉘코드가 원하는 시작지점은 따로 존재함 때문에 쉘코드가 원하는 시작지점으로 EIP를 설정함
앞서 이 쉘코드는 인터넷 연결을 통해 데이터를 다운로드 후 메모리 공간에 적재하고 Http통신을 통해 C2통신을 함을 알았음 정확히 어떤 도메인을 통해 통신을 하는 것인지 추가적으로 분석 문자열 분석 Hex Editer로 분석하면, /iWWE라는 데이터가 보임 이는 HTTP의 URL패턴 또한, baidu.com이라는 도메인 또한 보임 이곳에서 공격이 이루어짐을 짐작할 수 있음 User-Agent라는 데이터를 추가로 발견 이는 Http 요청 메시지의 헤더값 중 하나 요청 시 브라우저의 버전 및 종류를 나타냄 이를 통해 쉘코드는 HTTP 요청을 사용하고 있음을 예상할 수 있음 직접적인 IP 데이터가 보임 이는 C2 시스템의 아이피일 가능성이 매우 높음 하지만 이는 어디까지나 예상하는 정보로, 정확한 정보는 ..