목록Hacking & Security/Malicious code and Reversing (23)
선릉역 1번 출구

저번에 마지막 쉘코드가 복호화 되었다. 그럼 이제 009F0000에 복호화 된 코드가 어떻게 실행되는지 보자 이 부분에서 실행시키는 것 같다. 하나하나 차근차근 분석해보자 VirtualFree 함수를 실행시키는 부분에 와보니 위에 차례대로 파라미터 값인 8000, 0, 009D0000를 넣어주고 있었다. stack을 보면 8000, 0, 009D0000이 들어가있다. -> 그런데 009F0000에다가 마지막 복호화를 해주었는데 왜 009F0000이 아닌 009D0000이 들어가는지는 모르겠다. 일단 패스하고 다음에 알아보자. 이 시점에서 009F0000이 다시 009D0000에 덮어씌워졌나했는데 그것도 아니었다. virturalFree는 무엇을 하는 함수인가 -> 아! 할당한 메모리를 Free해주는 함수..

저번에 복호화 한 shellcode를 실행하는 도중 또 shellcode안 어떤 부분을 decode하고 압축 해제하는 부분이 있는 것 같다. ollydbg로 실행해보자. v115에 값을 넣어주고 있는데 그부분이 EBP-40이다. dump로 EBP-40으로 가니 009D0000주소가 리틀엔디언으로 들어가 있다. 그럼 이 부분이 끝나면 009D0000에 복호화된 코드가 있을 것이다. 279줄에 해당하는 sub_9C1270전까지 실행해보자. 009C046A에는 코드와 같은 ROL이 존재한다. 압축을 해제하는 코드 시작이 009C04B1이엇서 4B0까지 실행한 결과 009D0000에 복호화 된 내용이 써져있다. sub_9C1270도 압축 해제이기 때문에 압축 해제한 파일을 어디에 작성할 것이다. 어디에 작성하는..

지난 포스팅에서는 clop이 shell code를 복호화하는 것을 보았다. 그럼 복호화한 코드를 실행한다는 것인데 잘 이해가 안가서 flowchart를 작성해보려고 한다. 1. WinMain() sub_401000()으로 이동한다. 2. sub_401000() 왼쪽은 저번에 복호화를 진행한 부분임 정확하게는 hKernel32이 args이라고 볼 수 있음 shellcode의 파라미터로 넣어줌 3. shellcode 진입 shellcode의 주소는 00001407 -> ollydbg에서 00401407로 이동해보자. 해당 부분에 breakpoint를 걸어놓고 실행시킨뒤 해당 함수로 F7을 사용해서 들어가보자. 009C0000이다. 어디서 많이 본 주소같다. 바로 이전 포스팅에서 복호화한 코드를 작성한 ECX..

암호화 된 부분을 복호화하는 방법 IDA code 암호화 시작 부분은 v17 = aK_J이다. 해당 부분의 주소를 확인하면 0010C6이 나오고 해당 주소를 ollydbg(+400000)한 결과인 004010C6으로 이동한다. ollydbg에서 해당 주소로 가보면 MOV [EBP-44] signed.0040831C 명령어가 있다. 해당 명령어는 파라미터에 변수를 넣는 =과 역할이 같다. *MOV is = 0040831C는 앞에 aK_J에 해당한다. 그리고 나서 for문을 도는데 for문은 아래 형광펜으로 표시한 곳에 해당한다. 여기서 > 표시는 loop가 끝났음을 의미한다. 값을 넣어주는 부분을 클릭하면(v26) 아래 0000119C라는 주소가 나온다. ollydbg에서 이 주소는 마지막 JMP위에 MO..
보호되어 있는 글입니다.

저번에 push EBP를 보았습니다. PUSH EBP는 새로운 함수가 호출됐을 때 EBP를 옮겨주는 과정입니다. 그래서 전 스택의 EBP를 PUSH해줍니다. 그 전에 호출하기 전 상태로 되돌아오기 위해서 CALL을 하면 return address를 stack에 push하는데, 이 때 Return address의 값은 7401E5A9입니다. 그럼 이 주소로 한 번 가보겠습니다. 해당 주소의 명령어위에는 CALL EAX를 호출하고 있습니다. 여기를 기점으로 stack값을 비교해서 RETN을 할 때 함수의 매개변수로 넘겨진 것도 같이 정리를 해줘야합니다. 일단 7401E5A9에 BP를 걸어서 실행해보겠습니다. EAX 값을 보면 결국 00402C17로 향하라고 돼있습니다.(CALL이 00402C17을 부르고 새..