본문 바로가기

Analysis

SYSENTER KiFastSystemCall 를 후킹하는 악성코드를 열심히 삽질중 http://sysenter.tistory.com/entry/SYSENTER http://opcode0x90.wordpress.com/2007/05/18/kifastsystemcall-hook/ 더보기
x86 과 x64의 다른점 http://msdn.microsoft.com/en-us/library/windows/hardware/ff558891(v=vs.85).aspx 더보기
하드 쓰기 방지 윈도우 비스타부터 하드드라이브에 데이터를 쓰기를 할 때 (IRP_MJ_WRITE) Flags 값에 SL_FORCE_DIRECT_WRITE 를 사용하면 섹터에 내용이 기록되지 않습니다. 그러므로 재부팅하는 경우에는 저장된 내용이 모두 롤백되는 현상이 나타나죠 2013년도 쯤에 diskflt 이라는 악성코드가 이것을 이용한적이 있는데, 그 때는 어떤동작원리인지 몰랐는데 이제 알게되네요 참고링크 : http://msdn.microsoft.com/ko-kr/library/windows/hardware/ff551353(v=vs.85).aspx 아래는 diskflt 오픈소스 내부 내용 더보기
RC4 def rc4crypt(data, key): x = 0 box = range(256) for i in range(256): x = (x + box[i] + ord(key[i % len(key)])) % 256 box[i], box[x] = box[x], box[i] x = 0 y = 0 out = [] for char in data: x = (x + 1) % 256 y = (y + box[x]) % 256 box[x], box[y] = box[y], box[x] out.append(chr(ord(char) ^ box[(box[x] + box[y]) % 256])) return ''.join(out) 더보기
ShellCode 사용 후 삭제하기 쉘코드를 모두 사용하고 0x3A8 만큼 0x90으로 삭제 더보기
C# 으로 만들어진 뱅킹 악성코드 iframe 변조를 이용하는 악성코드. C#으로 작성되어 있어서 디컴파일을 이용하여 분석이 가능하지만, 난독화는 기본이요. 일부 클래스는 디컴파일도 안된다.. 이게 기존에 발견되던 악성코드이고..이번에 얻은 샘플은 운이 좋겠도 DLL 파일은 난독화를 하지 않았다. 그래서 디컴파일된 파일을 이용하여 VS 프로젝트 파일로 만들고 VS에 올려놓고 분석하는 중! 더보기
EP가 0x00000000 인 악성코드 PE파일의 Address of Entry Point 가 0x00000000 이다. 처음에 이것을 보고 '어? 이거 동작하나?' 라고 생각했는데 실제로 동작한다. 도대체 EP가 0x00000000인데 어떻게 동작하는건지 궁금해서 잠깐 살펴보니.. 이렇게 되어있다. OEP는 Imaga Base 와 EP를 더한 값인데, OEP가 Image Base와 동일하면, EP 는 0x00000000 이여도 상관 없다. 오오-ㅁ- 대단하다! 더보기
Polip 악성코드가 사용하는 복호화 로직 Polip 악성코드는 변형된 Xtea 알고리즘을 사용하며, 그것을 어셈코드로 코딩하면 다음과 같다. 더보기
2개의 악성코드 중 한개의 악성코드를 강제로 종료 후 다시 실행되는 이유 가끔 악성코드 중에 똑같은 파일이 2개 프로세스에 동작하고 있는 것을 보게되는데.. 하나를 Kill하면 나머지 하나가 Kill된 프로세스를 살려주고, 이렇게 서로 살려주면서 계속 프로세스가 살아 있는 경우가 있다 도대체 무슨 원리로 이렇게 할까 궁금해서 열심히 디버깅한 결과 Event를 이용하여 A가 B의 이벤트가 존재하는지 체크, B가 A의 이벤트가 존재하는지 서로 체크하면서 없는 경우 새로 생성해 준다. 실제로 Process Explorer.exe 를 이용하여 Event를 종료하면 프로세스는 동작중이지만, 새로 생성되는 것을 확인할 수 있다. 더보기
[Reversing.Kr] Replace.exe 빈칸에는 숫자만 입력이 되고, 입력되는 숫자는 어떤 공식에 의하여 주소로 변경됩니다. 변경된 주소는 어떤 메모리 주소의 어셈코드를 0x90(nop) 으로 밀어버립니다. 입력 값을 잘 조작(?) 하여 아래에 있는 점프문을 0x90으로 밀어버릴 수 있도록 하시면 됩니다. 더보기