본문 바로가기

리버스엔지니어링

아아 닷지크롬이 막혔습니다. 인터넷에서 소식을 들으니까 닷지크롬이 막혔다고 하네요.하지만 저희는 it인 이기때문에 그정도로는 저희를 막을수 없습니다.바로 크롬사용자에게는 veilduck이란 프로그램이 있기 때문입니다. 이렇게 귀여운 아이콘을 하고있는 veilduck이란 프로그램은 어떻게 해서 warning.or.kr을 뚫을수 있는지를 지금부터 분석해보겠습니다. 예전에 awardhotspot바이러스를 분석했을때 사용했던 방법을 이용하겠습니다. C:\Users\사용자이름\AppData\Local\Google\Chrome\User Data\Default\Extensions\이 폴더중 하나가 바로 veilduck이 있게됩니다.(veilduck을 깔았다면 말이죠)그래서 찾아서 들어가게 되면 _metadata,assets라는 폴더 두개와 ba.. 더보기
CodeEngn Advanced RCE L10 분석 후 드디어 코드엔진 Advance문제의 반을 풀었습니다. L07같은 경우는 어려워서 일단 남겨뒀네요.그래서 반 푼 기념으로 L10문제 분석을 하겠습니다. 문제는 지금까지와 별 다를바 없이 name과 serial을 입력하는 프로그램입니다. name에 따른 serial을 만드는 알고리즘을 파악해야 겠네요. 먼저 프로그램을 실행시키면 다음과 같이 틀리면 wrong serial을 표시하면서 꺼지게 됩니다.그럼 이제 직접 올리디버거를 통해 소스를 분석해보겠습니다. 먼저 name과 serial을 입력받는 부분입니다. 각각 CALL부분에 주석으로 달아놓은 말은 CALL로 부르는 함수가 strlen이라는 뜻입니다. strlen함수 밑에 있는 cmp구문과 함께라면 길이가 몇일때 해당되는지 알수 있겠죠.첫번째 strlen.. 더보기
CodeEngn Advanced RCE L03 분석 먼저 L03 문제를 살펴보겠습니다. 프로그램 자체는 굉장히 단순한 키젠미 파일로Name과 Serial을 입력한 후 Check를 눌렀을때 Serial이 맞으면 성공한다는 메시지가 뜨게 되고 Serial이 맞지 않으면 실패했다는 메시지가 뜨게 되는 프로그램입니다. 문제에서 원하는대로 Name이 CodeEngn일때 Serial을 구하면 되겠네요. 그래서 평소 크랙미파일을 풀때처럼 back to user mode를 통해서 에러메시지창을 잡아내시던가 혹은 오른쪽클릭-Search for-All referenced text strings를 통해서 You failed란 문자열을 출력하는 코드로 넘어오시면 됩니다.이때 맨 위부터 파란색박스를 보면 00401113 PUSH 03.0040323800401118 PUSH 3E.. 더보기
CodeEngn Basic RCE 끝! 수능끝나서 다시한번 달려봤습니다. ※추가Advance L01은 Basic L19랑 MD5해쉬값을 받아야된다는것 하나 빼고는 모두 동일해서 풀이를 올리는것을 생략하고 L02부터 올리겠습니다. 더보기
간단한 리버싱 워게임-1 간단한 리버싱 워게임을 4월모의 끝난 기념으로 만들어봤습니다.기본적인 프로그램은 사다리게임으로 click을 누르시면 양 옆 두 라인을 이어주는 선을 만들고,지웁니다.그래서 위에있는 숫자가 사다리를 타고 내려가서 같은 숫자가 나오면 그 숫자에 해당하는 패스워드가 복호화됩니다.모든 패스워드를 복호화시켜 answer를 누르시면 암호가 나옵니다. 바이러스같은건 넣지 않았습니다. 더보기
reversing.kr 44위 달성! 좀 빠르지만 2월목표였던 50위 안착을 1월달에 끝냈습니다. 이제 남은문제들이 거의 플래시, java,64bit용 프로그램 같이 32bit인 제 컴에서는 정적분석을 할수밖에 없는 문제들이라서잘 풀수 있을지 모르겠습니다. 더보기
랜덤 뽑기 프로그램 버그 수정 학교에서 가끔 자리를 제비뽑기로 결정하는데요, 일부 종이가 사라져서 2학기부터는 랜덤 뽑기 프로그램을 쓰고있습니다.그중에 우리 반이 쓰는 프로그램은 베이직 And C님께서 만드신 프로그램을 쓰고있습니다.이렇게 생겨서 리스트에 번호를 추가한다음 뽑기를 해서 나온 순서대로 앞에서 부터 앉습니다. 근데 왜 이걸 제가 예기하냐고요? 설마 제가 그냥 다른분께서 만드신 프로그램을 소개하려고 포스팅을 할까요.바로 맨 마지막 리스트가 안뽑히는 버그가 발견되어서 한번 프로그램을 분석해본 후에 직접 리버싱을 통해 버그를 고쳐보았습니다. 일단 맨처음에 바로 뽑기가 어떤식으로 이루어지는지 보겠습니다.뽑기로 가는방법은 아무런 리스트도 추가하지 않은채 시작을 누르면 나오는 창에 back to user mode를 통해 그 근처로 .. 더보기
Junior CTF Level2 오랜만에 해커스쿨을 좀 돌아보고 있었는데 멍멍님이 올리신 Junior CTF가 있더라고요.그래서 한번 풀어봤습니다.현재 예선전이 끝났으므로 풀이를 올려도 상관없을거라 생각해서 올립니다.문제가 있을시 덧글로 알려주시면 감사하겠습니다. 이렇게 문제가 주어지는데요.파일을 다운로드 해서 실행해보겟습니다. 이런식으로 패스워드를 입력하라고 한다음 맞음,틀림을 구분한다음 그 결과에 해당하는 메시지박스를 출력합니다. 일단 가장 간단한 리버싱기법인 Back To User 기법을 사용해보겟습니다. 그러니 이렇게 메시지박스를 만드는 부분이 있고,그 위로 password를 검사하는 부분이 있습니다. 이런 식으로 password가 있는데 이 어셈블리어를 자세히 읽어보면 A(레지스터값)을 99와 xor한뒤 그 값이 0xF1,0x.. 더보기
PE 구조 정리-2 저번 PE 구조 분석에 이어서 이번에는 Section header와 Section에 대해서 분석을 해보겠습니다.1) Section header이부분이 바로 Section header부분입니다. Section header 구조체가 하는 일은 각 Section을 분리시키고, Section들의 속성, 크기, 시작 위치 등 등을 정하는 곳입니다. #define IMAGE_SIZEOF_SHORT_NAME 8 typedef struct _IMAGE_SECTION_HEADER { BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; union { DWORD PhysicalAddress; DWORD VirtualSize; } Misc; DWORD VirtualAddress; DWORD SizeOfRawDat.. 더보기
PE 구조 정리-1 PE(Portable Executable)파일은 말 그대로 옮겨다니면서 실행시킬수 있는 파일을 말합니다.Microsoft가 다른 운영체제와 이식성을 좋게 하기 위해서 만든 파일 포멧입니다.그러면 Microsoft가 이런 PE파일을 만들기 위해 제작한 PE 파일 구조에 대해서 공부를 해보겠습니다. 1. PE 파일공식적으로 PE파일의 종류는 실행 계열 : EXE, SCR 드라이버 계열 : SYS, VXD 라이브러리 계열 : DLL, OCX, CPL, DRV 오브젝트 파일 계열 : OBJ이렇게 OBJ를 제외한 나머지는 모두 실행 가능한 파일로 이루어져 있습니다.2. 배우는 이유PE파일 구조를 배우면 파일이 실행되기 위한 모든 정보를 얻을 수 있습니다.예를 들어 어느 메모리의 주소에 로딩이 되는지, 프로그램이 .. 더보기