목록KISA 사이버 보안 훈련/스피어피싱 대응 심화 (10)
작은 메모장
이번 목표 문서 트리아지 늘 그렇듯 스트림 추출 먼저 시행 BIN00001.OLE와 BIN00002.jpg가 있음 분석을 위해 복사 및 압축 해제 압축을 해제 후 그림 파일을 hex 에디터로 연 모습 jfif형식을 띄고 있는 정상 그림 파일임을 확인 가능 뜬금없이 춘천시 로고 이미지가 보임 ?? 이게 왜 악성파일임? 의문이 생김 실제 한글 파일을 열어보면 문서 상단에 춘천시 로고가 있음을 확인 가능 아니 그래서 이게 왜 문제? 이 문서의 문제는 문서를 편집하려고 마우스를 올리면 텍스트 편집 커서 표시가 아니라 하이퍼링크 클릭 커서 표시가 나옴 즉, 저 춘천시 로고가 문서 전체를 덮고 있는 엄청나게 커다란 이미지 하이퍼링크를 확인 외부의 어떤 파일로 연결되는 것을 확인 가능 실제로 해당 프로그램이 있는 것..
이번 목표 문서 트리아지 항상 하듯 파일의 스트림부터 조사 2 ~ 6 섹션에 이상한 OLE, png 스트림이 발견 됨 zlib으로 압축되었을 것이므로, 압축 해제또한 진행 압축 해제가 완료되었으므로, 파일을 분석하기 시작 일단 2개의 사진 파일 전부 정상적인 PNG 파일임을 확인 내용물을 열어서 무슨 사진인지 확인 놀랍게도 상위버전 알람창과 매우 유사하게 생긴 사진(!!!)파일이 존재 실제로 악성 한글 파일을 열면 저런 창(아님)이 뜨는 것을 확인 가능함 즉, 별도의 가짜 알람 창을 만들어 사용자를 속이게 해 스크립트를 실행하게 하는 악성 코드임을 확인 한글은 그림이나 표, 그리기 개체에 하이퍼링크를 연결하는 기능이 있음 하이퍼링크를 연결하는 방법은 Ctrl + 좌클릭 때문에 저 확인 버튼에 악성코드를 ..
이번 목표 문서 트리아지 늘 그렇듯 데이터 스트림부터 확인 BIN0001.eps 스크립트가 잡힘 이전 사례에서도 보았듯, 포스트 스크립트는 정상적인 문서에서는 나오기 힘듬 악성 공격이 들어간 스크립트라고 판단 가능 이 스크립트를 별도의 파일로 추출 zlib으로 압축되어 있을 것이므로, 압축 또한 해제 정상적인 압축 해제가 된 모습 코드가 난독화가 되어있는 모습 저번처럼 def를 기준으로 줄바꿈을 실행 스크립트는 간단한 구성 Y101변수에 뭔가 엄청나게 긴 데이터를 넣고 이를 Y18변수와 xor연산을 한 뒤 exec 함수로 실행시킴 => exec 지우고 고스트 스크립트 위에서 어떻게 돌아가는지 보면 됨 실행키시면 스택에 값 하나가 들어있는것을 볼 수 있음 이 값은 아까 엄청나게 긴 값이 디코딩 된 스크립트..
이번 목표 문서 희안하게 이 문서는 확장자가 hwp가 아닌 hwpx로 되어있음 hwpx은 OWPML(Open Word-Processor Markup Language)로 만들어 짐 이로인해 만들어진게 HWPML 그 확장자가 hwpx hwp와 hwpx의 가장 큰 차이는 hwp는 바이너리 파일 기반 포맷 hwpx는 xml기반의 개방형 파일 포맷 = ZIP 파일 포맷 hwpx로 이루어지는 공격은 - xml에 공격자의 코드를 삽입 - 삽입한 xml 파일을 파싱 후 사용자에게 전송 - HWP 프로세스가 이를 파싱하는 도중 공격자의 코드를 실행 즉, xml에 악성 페이로드 코드가 존재 트리아지 확장자를 ZIP으로 변경 후 분석 특수 파이썬 코드를 실행하여 이상한 xml파일을 감지 section0.xml 파일이 이상하..
이번 목표인 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형 언어라고 이야기함 ..