'padocon'에 해당되는 글 2건

  1. 2011.02.27 Padocon 2011 Twit Bot 문제 풀이
  2. 2010.02.28 [ Padocon 2010 ] Crackme 100 Breakme 풀이

2011.02.27 15:14 WarGame

Padocon 문제를 기웃거리다 재밌는 문제를 발견했습니다.

Bot은 많이 들어보셨죠?

출동이다 Autobots!



아 이게 아닌가?

아무튼 위의 예시에서도 보셨다 시피

bot은 로봇의 준말입니다.

얼마 전 , 아니 요즘까지도 화제가 되는 있는 좀비 PC의 감염 원인이 되고 있는 녀석들이죠

일단 설치가 되고 나면 Command & Control Server에 접속해서 공격자의 명령에 따르는 착실한 종이 됩니다.

보통 IRC를 이용하여 공격자의 명령을 하달하곤 했는데 

요즘은 Twitter를 이용한 악성 Twit Bot 이 등장했습니다.

이번 문제에서 이용한 것도 Twit Bot 이구요.


[+] Dynamic Analysis


파일을 실행시켜 보면 먼저 hint.jpg 라는 파일이 생깁니다.



<그림1. Hint.jpg>


흠. 기존의 Bot의 구조도와 다르지 않습니다만 명령을 전달하는 것이 Twitter가 된다는 점이 흥미롭군요.

아무튼 이 hint에 직접적인 답은 없는 거 같고, 현재 Bot이 이런 원리로 돌아가고 있다는 것을 알려주기 위해서 생성된 거 같군요

Bot 이면 분명 명령을 하달하는 어느 Site에 접속을 할 것이고, 이 경우 특정 Twitter에 접속하겠죠.

나가는 Packet을 잡아서 확인해봅시다.


<그림2. Wire Shark 로 Capture 한 Packet>

확인해보면 fuck1224 라는 Twitter 계정으로 접근 하고 있는 것을 확인 할 수 있습니다.

바로 접속해보죠.


<그림3. Fuck1224 계정의 time line>

흠 문제가 쉽게 풀리는거 같군요.

분명 저기있는 알수 없는 문자들 중 하나가 답일 겁니다.

Base64로 Encoding 되어 있는거 같네요. 이걸 Decoding 해보면 답이 쨘!

어때요 참 쉽죠?

[ONL[Y|Dfzce}}D#}`/hfi.o|gg#~~t.abje+n

4J :ZZHIxoe {jecyoom4mstN+_un

}}S#PA|Dfi.ofzce0#

rj: M.KE$U0dph49Vaer}zTw"j7c,?t]#1c

으..으읭?

머리속엔 풰이크다, 이 볍진아 라는 플짤이 반복 재생되고 있습니다.

뭐 이렇게 쉽게 풀릴리가 없겠죠.

아무래도 문제 Binary의 정적 분석이 필요할 것 같습니다.



[+] Static Analysis


이것 , 저것 다 떼고 핵심 함수만 살펴보죠.

해당 Twitter에서 문자열을 받아 이를 Command 로 해석하는 부분을 봐야합니다.

String 을 뽑아내니 어딜 봐야 할지 답이 나오네요.

DOWNLOAD, DDOS, STOP ...

저 함수가 분명 할겁니다.

<그림4. IDA 로 뽑아낸 Binary의 String>

해당 함수를 살펴보면 인자로 Twitter Time line 에 나왔던 문자열을 받는 것을 볼 수 있습니다.

Decoding 하는 함수를 분석 해서 할 수도 있겠습니다만

그냥 인자를 넘겨줄때 저희가 원하는 문자열을 넣으면 되겠죠.

아마 가장 첫번째 문자열일거라고 생각합니다.

해당 문자열을 넣어보면.. 

cmo6IE0uS0UkVTBkcGg0OVZhZXJ9elR3Imo3Yyw/dF0jMWM=



<그림5. 원하는 문자열을 넣고 Decoding 완료 시에 BP로 잡아낸 모습>

저게 답이 겠죠?



[+] Etc



이런식으로 Twitter를 이용해 악성 Bot에게 명령을 내리게 되면

이를 추적하기가 상당히 난해해집니다.

서울에서 Bot에게 명령을 내리든, 부산에서 내리든, 해외에서 내리든 

Bot은 정상적으로 동작하기 때문에 공격자의 위치를 특정하기가 굉장히 어렵다고 하는군요.

Social Network가 한창 인기를 얻어 부상함에 따라 Bot도 유행을 따라 Twitter에 탑승하는군요.

각 AV사에서도 지금 알려진 Twit bot들에 대한 엔진 업데이트를 마친 상태입니다.

보안은 영원한 창과 방패의 대결이랄까요. 



아무튼 요즘 문제시 되는 상황에 맞는 재미있는 문제였다고 생각합니다 :D

출제자 분들에게 박수를! 




Posted by LinkC

댓글을 달아 주세요

2010.02.28 19:59 WarGame


지난번에 Padocon CTF 경기가 있었습니다

제가 참가하진 못했지만 문제는 쉽게 구할수 있더군요 '-'

그래서 구한 문제들을 한번 풀어보았습니다




Check the Value 버튼을 클릭하면

값을 검증한뒤

메세지 박스를 하나 띄웁니다

그 값을 검증 하는 부분을 찾아서

우회하면 답이 나오 겠죠

검증 하는 부분을 찾는 방법에는

메세지 박스 위로 쭉 trace 하며 찾는 방법과

사용자가 입력한 값을 T search 등을 이용해 메모리에서 찾아서 BP를 건다음에 그곳에서 부터 진행하는 방법

등이 있겠습니다

아, 간단한 안티 디버깅 부분이 있습니다



code 영역 초반에 보이는 부분입니다

위 스샷은 제가 이미 수정한 부분이구요

현재 실행된 프로세스 중에 ollydbg.exe 가 있는지를 검사하는 간단한 안티 디버깅 루틴이군요

문자열만 살짝 바꿔주면 정상적인 디버깅이 가능해집니다 :D




자 그럼 계속해서 

검증 루틴을 찾아보면




위 SendMessageW 에서는 각  슬라이더에서 값을 윈도우로부터 받아옵니다

리턴 값을 보면 각각의 값이 기록되있는걸 볼 수 있죠

그리고 IMUL 부분

모두 곱한다는 의미죠

다 곱해서 나온 값이 16진수로 6B77 , 그러니까 27511 이군요

이 값과 비교해서 맞으면 정답 메세지를 출력하겠죠

우회해봅시다



정답이라고 보기엔 너무 규칙성 없는 문자열이네요

모두 곱한 값을 체크 한다음에

사용자가 입력한 값을 기준으로 문자열을 생성하는 모양입니다

그 루틴을 찾아도 우리가 원하는 문자열이 무엇인지 모르기 때문에

세 수의 곱이 27511 인 값을 찾는게 해답을 찾는 방법이죠

끝자리가 1이니 손으로 찾는 것도 어렵진 않겠습니다만

간단히 코드를 짜봅시다 :D


어때요, 참 쉽죠?


'WarGame' 카테고리의 다른 글

[Python Challenge] level2 풀이  (0) 2010.03.05
[Python Challenge] level1 풀이  (0) 2010.03.05
[ Padocon 2010 ] Crackme 100 Breakme 풀이  (0) 2010.02.28
Vortex level3 풀이  (0) 2010.02.20
Vortex level2 풀이  (0) 2010.02.16
Vortex level1 풀이  (0) 2010.02.10
Posted by LinkC

댓글을 달아 주세요

이전버튼 1 이전버튼

블로그 이미지
LinkC

태그목록

Tistory Cumulus Flash tag cloud by BLUEnLIVE requires Flash Player 9 or better.

공지사항

Yesterday31
Today9
Total333,198

달력

 « |  » 2019.10
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

최근에 받은 트랙백

글 보관함


. .