Loading
2023. 4. 17. 22:40 - lazykuna

Short note — win exe reversing

https://www.youtube.com/watch?v=Sv8yu12y5zM

무려 실제 랜섬웨어 프로그램을 리버싱하는 예시인데, 너무 흥미로워서 토막글을 남겨둡니다. 예전에 리버싱 공부할 때 이런 걸로 공부했어야 했는데 😭

아마 더러운 난독화 (import, starting point, 그외 기타 암호화 obfuscation 등)가 더 들어갔으면 더 복잡했을 것 같지만 이 프로그램은 꽤 단백한 느낌입니다.

  • 맥에서도 reverse가 되네? ghidra 가 꽤 쓸만한 듯. 드디어 IDA에서 벗어날 수 있겠구나!
  • 역시 ollydbg 같은 걸로 Runtime 상에서의 분석도 중요하지만, 정적 분석도 잘 할 줄 알아야 한다.
  • 프로그램 안에 프로그램은 좀 신박하네요. 근데 어차피 리소스 까보면 다 보이긴 할 듯
  • 함수나 변수에 이름 붙이기가 꽤 중요! MSDN 같은 레퍼런스 써가면서 붙이는 건 생각 못했다. 이 부분이 과거 리버싱 했을때 내가 가장 취약했던 점이었을 거임… 이름 안 붙이고 쌩으로 파악하려니까 push/popd 등의 향연에 정신을 차릴 수가 없다. 이름과 Type을 제대로 붙이고 나니 디어셈블러에서 코드를 명료화해서 표시해주는게 몹시 인상깊었음.
  • memcpy, strcpy, memset, memzero 디어셈 하면 보이는 특징적인 패턴을 빠르게 파악하는 게 좋아 보임. 이런 패턴류가 더 있는지는 모르겠지만, 정리해 둔 게 있으면 좋을 것 같다.
  • 디컴파일러가 하나의 배열을 여러개로 쪼개서 인식하는 경우가 있는 것 같다. 이를테면 char[780] 이 원래 코드였다면, 디컴파일러에서는 char[120] unsigned[680] 이런 식으로 보여지는 경우. 이것도 잘 파악해서 깔끔하게 만들어주는 게 포인트인 듯 하다. 아마 배열 중간에 접근하는 코드가 있으면 이렇게 보이겠지?
  • 클래스 코드는 만들어진 어셈블 코드가 너저분해서 디컴파일하기에는 지옥이다. __thiscall 이 의심해봐야 할 시그널. OOM 분석 관련 플러그인 있으면 반드시 도움을 받을 것.
  • 암호화 DATA를 찾아주는 플러그인도 있네?! 이걸 이용하여 이 constant을 활용하는 함수들의 저의(?)를 미리 파악하는 데 큰 도움이 될 듯.
  • stl 클래스는 디어셈블링에선 정말 지옥같은 존재이다.

Reference

이건 이후에 별도로 참고할 예정: Lightning cable hack

 

'개발 > Essay' 카테고리의 다른 글

개발자로서 자신을 예쁘게 포장하기  (4) 2024.10.04
Lessons for 2023 Q3  (0) 2023.10.11
Filter iteration과 Low pass  (0) 2023.03.20
Lessons learned in 23Q1  (0) 2023.03.03
개발 관련하여 읽은 책과 글들 (2022년 하반기)  (0) 2022.12.26