analysis
아무 보호기법도 없고,
실행하면 다음과 같이 나온다.
64bit 파일이므로 ida로 분석해본다.
syscall 을 보려고 strace -i 한다. mmap을 사용한다.
동적 분석을 하다보니, mmap으로 새로 만든 공간에 기존 코드 영역을 복사하는 부분이 있다. https://b.mytears.org/2008/08/666/
돌아가서 이후 실행하는 코드를 ida로 확인하고 continue.
근데 이제 보니까 이건 리버싱 문제였다.
리버싱 문제니까 IDA로 문자열이라도 확인해본다.
문자열이 생각보다 얼마 없다.
그리고 모든 문자열들이 수상하게 생겼다..
첫 번째 문자열을 xref가 없다. 아마 이걸 되돌려서 flag를 만들거라는 예감이 든다.
두 번째 문자열은 주석같은 느낌이다. 뭔가 일부러 안 지운거 같은데.
실제로 upx.sf.net이 있다.
그리고 UPX는 실행 파일 압축 프로그램이라고 하니까 해당 부분에서 UPX를 압축 해제하면 다른 프로그램이 나올 가능성이 있다.
proc/self/exe도 이를 위한 발판일수도..? 모르겠다.
string 뽑아도 UPX가 있네. 이쯤되면 UPX를 한 번 조져봐야 한다.
https://github.com/upx/upx/releases/tag/v4.1.0
여기서 설치한다.
설치된 upx를 실행해서 보면 decompress 옵션을 주면 될 것 같다.
따로 upx폴더에 복사해두고 명령어를 실행하니 뭔가 된 것 같다.
이후 해당 파일에 대해 info func을 수행했는데 무언가 된 모습. 정적 링크 되어있는 것 같다.
이제 본격적으로 분석을 해보자.
solution
upx를 uncompress 한 파일을 IDA로 실행했더니 행복하다.
이걸 분석하면 될 것 같다.
이후에는 그냥 바이너리 열고 프로그램대로 따라가서 보면 해당 공간에 플래그가 적혀있다.
히히.