앞서 본 Replace와 같이 JavaScript 메소드를 이용하여 풀어야 하는 파일이 있다. 이번에 중점으로 봐야할 메소드는 “.substr( )” 메소드이다. Substr 메소드는 지정한 위치부터 지정한 길이 만큼의 문자열을 리턴하는 메소드이다. 그럼 악성파일을 살펴보자. String("http:P5v".substr(0,5)+"//panHSOY".substr(0,5)+"3aPiplusP3a".substr(3,5)+".com.V4Hq".substr(0,5)+ "mx/1.0Xq".substr(0,5)+"HFkhtmlFHk".substr(3,4)) 하나씩 따져보면 다음과 같이 나온다. "http:P5v".substr(0,5) -> 0부터 5개의 문자열 반환 -> http: "//panHSOY".substr..
디코딩을 하다보면 이건 분명히 기본적인 Java Script는 맞는데, 가지고 있는 툴로는 도저히 풀리지 않는 것들이 있다. 특히 최근 등장하는 파일에서 JavaScript 문법에서 사용하는 특정한 메소드를 이용하여 문서를 재구성하는 경우가 많이 있다. 이러한 경우에는 당황하지말고~ 찬찬히 풀어보면 답이 보인다. 위의 그림을 보면 분명 “p='hNtTt?p?:F/?/?pTi@a?zNz@aNcFrFe?a?tNiNv?eF.?c?o@mF/?zF.NhNt?mTlF'” 이 부분이 http://를 표현한 듯은 한데, 정확히 알 수 없다. 하지만 뒤에 .replace라는 메소드가 보일 것이다. Replace 메소드는 검색 한 문자열을 다른 문자열로 치환하는 메소드이다. 그럼 실제 악성코드를 살펴보자. 'hNtTt?p..
취약점에 관련 된 악성코드들은 대부분 다운로드, 드롭형식을 가지고 있다. 이번 PDF파일은 PDF파일에 악성코드를 삽입시킨 후 힙 스프레이 코드에 의해 악성파일을 생성하는 형식의 PDF이다. 우선 PDF에서 스크립트를 추출해야 하는데 일반적인 inflater.exe, pdftk.exe 프로그램으로는 스트림 추출에 모두 실패하였다. 그래서 이번에는 새로운 툴인 pdf-parset.py를 가지고 분석하는 방법에 대해서 설명하겠다. pdf-parset.py는 파이썬 2.5 이상이 설치되어 있어야 동작할 수 있으니, 미리 설치를 해두어야 한다. - pdf-parsey.py를 사용하여 스트림을 추출하는 방법 1) PDF의 내부상태 확인(pdf-parser.py --stats 20.pdf) 2) javacript가..
기본의 swf는 자체적인 XOR 또는 Script가 존재하였지만, 요즘 나오는 Swf파일은 ActionScirpt를 이용하는 경우를 많이 볼 수 있다. 샘플 19.swf 는 일반 swf같아 보이지만, 1개의 swf에 6버전별로 6개의 swf가 들어가 있는 파일이다. 이런 경우 첫 시작점을 찾는 것이 중요하다. 어느정도 눈썰미가 있다면 시작점은 “26 1B 10 C4” 이란것을 금방 알 수 있을 것이다. 기존에는 Sothink SWF Decompiler v4.0을 사용하였지만, 4.0버전에서는 보이지 않던 액션스크립트가 5.0에서는 보이기 때문에 이제 5.0이상으로 갈아타시길 바랍니다. 5.0으로 샘플 19.swf를 보게 되면 다음과 같은 버전별로 구성되어 있다는 것을 알 수 있다. (샘플 툴킷 소개에 올..
샘플 18.pdf는 16.pdf, 17.pdf와 동일하게 stream을 넣어서 동작시키는 방식이다. 우선 inflater.exe를 사용해서 스트림을 분리하자. 그럼 다음과 같이 2.tmp 파일이 생성된다. 많이 보았던 형식으로 바로 Malziila로 디코딩을 시작하자. 하던 듯이 Decoder에서 Runscript를 돌리면, 1차 디코딩이 완료된다. 여기서 부터가 조금 까다롭다. 모든 Ascii값에 +6이 붙었다. 이것만 아니면 바로 2차 디코딩이 완료 되겠지만, 아쉽게도 수동으로 좀 해야 할 듯 하다. 프로그램밍이 되는 사람은 프로그램을 짜서 모든 값에 +6을 한 결과값을 가지고 디코딩하면 된다. 하지만, 조금만 머리를 굴리면 기본값인 112에서 6번만 증가시키면 되는것이다. 112의 Ascii값은 “..
샘플 17.pdf는 16.pdf와 동일하게 stream을 넣어서 동작시키는 방식이다. inflater.exe를 이용하여 stream을 추출해보도록 하자. 스크림을 찾을 수 없다며 Error 로그를 보여준다. 그럼 pdftk.exe를 다운로드 하여 사용해보자. 사용방법은 “pdftk.exe 원본파일명 output 새로운 파일명 uncompress” 으로 하면된다. Pdftk.exe는 inflater.exe와는 다르게 추출 된 Stream을 새로운 파일의 pdf에 추가하여 준다. 다시 말해 17.pdf에서 추출 한 stream을 un_17.pdf 파일에 추가하여 생성시켜 주는것이다. 새롭게 생성 된 un_17.pdf 파일을 보면 기존 pdf파일에 Stream을 추출 한 내용이 추가 된 것을 볼 수 있다. 1..
샘플 16.pdf는 PDF안에 stream을 넣어서 동작시키는 방식이다. inflater.exe를 다운로드 하자. inflater.exe는 PDF 스트림을 빼내어 폴더에 저장하는 역할을 한다. 사용 방법은 “inflater.exe 원본파일 스트림을 추출할 폴더이름” 으로 실행하면 되며, 추출이 성공적으로 되면 다음 그림과 같이 Done가 표시된다. Un_16.pdf 폴더에 가면 1.tmp파일이 생성되었으며, Ultra로 확인결과 일반적인 Script임을 알 수 있다. 여태까지 모두 실습을 해왔다면, 큰 무리 없이 디코딩을 할 수 있을 것이다. AsciiCode를 1차 디코딩으로 하고, 2차 디코딩으로 ShellCode를 풀면 url을 얻을 수 있다. 뭐 아직까진 거의 툴에 의존하여 디코딩을 하기 떄문에 ..
PDF 취약점을 악용하여 동작하는 Scirpt이다. 어차피 PDF안에 들어가는 JavaScript이기 때문에 크게 어려울건 없다. 샘플 15.pdf파일은 암호화 되어 있지 않은 pdf이기 때문에 쉽게 풀 수 있다. Ultra로 열어보면 다음과 같은 스크립트를 볼 수 있다. 어디서 많이 본 것이다. 바로 “수정이 필요한 Script” 와 동일하다. 2019/11/20 - [악성 스크립트 디코딩 강좌] - 수정이 필요한 Script 위의 내용과 동일 한 내용이니 설명 없이 넘어가도록 한다. PDF 도 압축만 안되어 있으면 스크립트 찾기는 매우 쉽다^^
샘플 14.swf는 CWS로 압축이 되어 있지만, 기존에 사용하던 swfdecomp.exe로는 압축이 풀리지 않는다. Sothink SWF Decompiler로 열어보면 의심스러운 부분은 존재한다. 그림을 보면 연속적인 aaaa 부분을 지난 다음 90909090으로 시작 되는 코드부분이 있다. 이 부분이 ShellCode로 의심되는 부분이다. 우선 의심스런 부분만 짤라내서 보자. 분석툴 다운로드에서 Action_Script_Viewer를 다운로드 한다. 이후 샘플 14.swf를 오픈하여 Yes 나 Yes to All을 선택하고 Error log를 닫는다. 그리고 Special Tags 탭으로 이동 하여 원하는 태그에 마우스우측버튼을 눌러 save as시킵니다. Save 시킨 swf 파일은 FileInsi..
자 이제부터는 조금씩 어려워진다. 기본 지식이 쬐~~~금씩은 필요하니 잘 따라오기 바랍니다. 일단 샘플 13.swf는 압축이 풀려 있는 상태이다. 하단 부분을 보니 url로 의심되는 부분이 있다. 아무래도 XOR값이 있을 듯 하다. 복호화 방법은 13.swf를 뒤져서 XOR값을 얻어오는 것이다. ultra로 13.swf를 오픈 후 OllyDbg의 Attach옵션을 이용하여 ultra프로그램을 오픈하자. 이후 Memory Map을 열어 Ctrl+B로 FWS의 스트링을 메모리맵에서 검색한다. 그럼 Ultra에서 오픈 중인 13.swf의 파일을 찾아준다. 찾은 13.swf가 원본인지 확인을 한 다음, 13.swf파일이 맞다면 마우스 우측버튼의 Disassemble를 클릭 한다. 에셈블리어로 보다 보면 XOR ..
Swf는 Shockwave Flash Object로써 Flash파일이다. 이를 이용하여 악성코드를 다운로드 할 수 있다. Swf 또한 일반 PE의 실행압축처럼 압축이 가능하다. 샘플 12.swf파일을 보면 아래의 그림이 바로 압축이 되어 있는 CWS상태이다. 우선 CWS로 압축 된 상태를 swfc11.exe(swfdecomp.exe)로 디코딩을 하면 다음과 같이 FWS로 같이 압축이 해제된다. 그 이후 하단 부분을 보면 원하는 url을 얻을 수 있다. (참고사항) swfdecomp.exe의 사용방법은 swf파일을 swfdecomp.exe 파일 위로 Drag 하면 된다. 이번 강좌는 스크립트보다는 SWF파일에 있는 URL을 찾아내는 방법이라고 해야할까??;; 암튼 따라해보시면 쉽다!!
샘플 11.htm은 4번 스크립트 복호화와 비슷하다. Eval로 시작하기 때문에 malziila로 디코딩이 가능하지만 그전에 수정할 부분들이 있다. 수정해야 할 부분들은 \ 이다. 처음부분과 맨 끝부분을 수정해야 하는데 eval\