본문 바로가기

[Riversing]

(30)
[코드엔진] malware06 코드엔진 사이트에 들어가 malware06 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn) 6번 프로그램의 Thread Mutex가 무엇인지 물어본다. 우선 Thread Mutex를 간단하게 설명하면 멀티 쓰레드 환경을 구축 할 때에는 공유 자원 영역에 대한 동기화가 필요하다. 이 동기화를 하는 방법에는 여러가지 방법이 있는데, 이 중 하나가 Mutex 라고 할 수 있다. 쉽게 얘기하면 Mutex는 화장실이 하나 있는 식당이다. ThreadA , ThreadB 가 식당의 손님이라고 가정하면, 화장실은 공유 자원 영역이 될 것이고, 화장실의 key는 하나 뿐이다. A가 화장실을 이용하는 중이라면, B는 당연히 화장실에 못들어가고 밖에서 기다려야 한다. 이러한 방식으로 critical sec..
[코드엔진] malware05 코드엔진 사이트에 들어가 malware05 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn) 이번에도 소스코드가 텍스트 파일로 되어있다. 확인해보자. 눈에 띄는걸 먼저 찾아보면, encode 와 Table 배열에 모든 문자열이 다 포함되어 있다는 것, 그리고 어떠한 연산과정을 거치고 나서 encode 를 반환 한다는 것 정도이다. 주석을 달아가면서 분석해보자. 15번째 줄에서 0x3f 와 and 연산을 통해 buffer2가 어떤 값이든 Table 인덱스에 접근 할 수 있게 수를 맞춰준다. 그리고 그 맞춰진 값을 인덱스로 Table 배열의 값을 어떠한 값으로 바꿔준다. Table 배열의 원소 갯수는 64 개이다. => Base64 encoding 이라고 판단 할 수 있다. Success! 창..
[코드엔진] malware04 코드엔진 사이트에 들어가 malware04 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn) SQL injection 공격을 당하고 있다고 한다. SQL Injection 이란 코드 인젝션의 한 기법으로 클라이언트의 입력값을 조작하여 서버의 DB를 공격할 수 있는 공격방식을 말하는데, 주로 사용자가 입력한 데이터를 제대로 필터링, 이스케이핑하지 못했을 경우에 발생한다. php 설정파일에서 sql인젝션을 방어하는 옵션은 magic_quotes_gpc 이다. 보통 공격을 할때는 홑따옴표 ' (single quotes)를 사용하는데, magic_quotes_gpc 옵션을 키게 되면 addslashes() 라는 함수가 홑따옴표를 만나면 \' 의 형식으로 바꿔서 이스케이핑 할 수 있다. 하지만 이 ..
[코드엔진] malware03 코드엔진 사이트에 들어가 malware03 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn) 파일을 열어보면 간단해보이는 소스코드가 적혀있는 메모장 파일이 나온다. 흠, 주석을 달아 분석해보자. 결과적으로 이 함수는 체크섬 역할을 하는 함수이다. data의 1bit 만 달라져도 value 값이 완전 달라지기 때문에 오류검출할 때 쓰는 함수이다.
[코드엔진] malware02 코드엔진 사이트에 들어가 malware02 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn) 코드를 열어보면 Malware1번 문제처럼 코드가 주욱 나온다. 분석 ㄱ 처음 body[] 부분에 xml 버전이 나와있고 알만한 문자열중에 DAV 라는게 눈에 띈다. 잘은 몰라서 구글링을 해보니 WebDav 라는 내용이 많이 나온다. WebDav를 구글링해 보자. 텀즈에 아래와 같이 설명되어있다. WebDAV[웹답]은 웹상의 공동 저작활동을 지원하기 위한 IETF 표준으로서, 멀리 떨어져 있는 사용자들 간에 인터넷을 통해 파일을 공동 편집하고 관리할 수 있도록 해주는 일련의 HTTP 확장이다. WebDAV은 원격 그룹들 간에 새로운 방식으로 공동 작업을 가능하게 함으로써, 가상 기업의 개발 효과를 ..
[코드엔진] malware01 코드엔진 사이트에 들어가 malware01 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn) 파일을 열어보면 알수없는 코드가 있고, 이를 분석해서 어떠한 기법인지 알아내는 문제이다. 자세한 분석을 위해 코드에 주석을 달아 분석해 보았다. => 코드(주석포함) 텍스트형식 더보기 //------------------------------------------------------------------------------ // 공격준비 //------------------------------------------------------------------------------ addr_in.sin_family=AF_INET; //IPv4 주소체계에서 사용하므..
[코드엔진] advance04 코드엔진 사이트에 들어가 advance04 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn) name 이 주어졌고 시리얼번호를 구하는 문제이다. 프로그램을 실행시켜 보면 아래 그림과 같이 이름과 시리얼번호를 입력하는 창이 뜨는 간단한 프로그램이다. PEiD로 분석 ㄱㄱ 흠 Exeinfo PE 로도 봐야겠다; self write 코드란다. 이런건 처음 봤다. Ollydbg로 분석해보자. intermodular calls 도 text strings 도 나오지 않는다. 색다른 방식으로 패킹이 되어 있는 듯 하다. 프로그램이 위의 그림처럼 00401006 주소로 JMP 하는 루프로 시작되는데 아무래도 이 00401006 주소가 OEP 인 듯 하다. 이 주소로 이동해서 덤프시켜주자. 위 그림과 같이..
[코드엔진] advance03 코드엔진 사이트에 들어가 advance03 문제를 다운로드 받고 압축을 푼다(비밀번호 : codeengn) name이 주어지고 serial 번호를 구하는 문제이다. 우선 PEiD ㄱㄱ 패킹은 되어있지 않고 MASM으로 만들어진 프로그램이다. 실행해보자. 이러한 프로그램이다. Ollydbg로 분석 ㄱㄱ Textstrings 를 확인해 프로그램에 쓰인 문자열을 찾아 이동한다. 위 사진처럼 IstrcmpA 함수로 내 입력값과 시리얼 넘버를 비교한 뒤 실패구문으로 분기한다. 00401196 주소에 bp를 걸고 실행시켜 55 라는 입력값을 넣어보자. 음 이상하게 내 호스트 컴 환경에서는 프로그램을 올리에 올리면 에러가 뜨며 함수들이 제대로 뜨지 않아서 Vmware에서 디버깅 중이었는데 Vm 환경에서는 프로그램의 ..