목록분류 전체보기 (106)
훈훈훈
1. 실습환경- 운영체제 : Windows 7 32bit- 실습도구 : Immunity Debugger 2. 실습과정 1) 파일 실행 : 분석하기 이전에 먼저 파일을 실행시켜 어떻게 동작하는지 확인한다. 위 사진은 파일을 처음 실행시켰을때 출력되는 화면이다.사진을 자세히 보면 "Name" 과 "Serial"을 입력받고 "Check" 하는 항목이 있는 것을 알 수 있다. 를 살펴보면 "Name"과 "Serial"에 임의의 값을 입력 후 "Check"를 클릭했을때 "Wrong 메세지"가 출력되는 것을 볼 수 있다. 2) 파일 분석 : "Immunity Debugger"로 해당파일을 분석해보았다. 위 화면은 "Immunity Debugger"로 해당파일을 실행시켰을때 코드영역을 보여주고 있다. 위 코드를 자세..
1. 실습환경- 운영체제 : Windows 7 32bit- 실습도구 : Immunity Debugger 2. 실습과정 1) 파일 실행 : 분석하기 이전에 먼저 파일을 실행시켜 어떻게 동작하는지 확인한다. 먼저 파일을 실행했을때 출력되는 메세지 박스이다. 문제를 풀기 위해서는 HD를 CD-Rom으로 바꿔야한다는 것을 알 수 있다. 에서 확인 버튼을 클릭하면 다음과 같은 메세지가 출력되는 것을 확인할 수 있다.아직 HD를 CD-ROM으로 패치하지 않았기 때문에 오류 메세지가 출력되었다. 2) 파일 분석 : Immunity Debugger로 해당 파일을 분석을 해보았다. 'Immunity Debugger'를 실행시키고 해당 파일을 오픈했을때 코드영역에 다음과 같이 출력된다. 코드가 간결하고 매우 깔끔한걸로 보..
이번 자료는 K-shieldjr 분석대응 과정에서 악성코드 분석파트를 맡아주신 누리랩 최원혁 대표님께 동의를 받고 강의 내용 중 복습을 위해 정리한 내용입니다. 1) 특징 - .com인 파일을 대상으로 감염 시킨다. - 감염된 파일은 100Byte 크기 증가 - 전위형 바이러스 2) 실습 환경 - 운영체제 : Windows 7 32bit - 분석도구 : MS-DOS DEBUG 3) 감염 대상 임의의 값을 입력하여 감염 대상인 "waveLab.txt" 란 파일을 생성했다. "Mini-100" 바이러스는 확장자가 ".com" 대상으로 감염시키기 때문에 감염 대상파일 확장자를 ".txt" => ".com" 으로 변환했다. 감염되기 이전 파일의 크기는 8byte 이다. 4) 분석 과정 감염대상이 있는 폴더에서 ..
이번에는 JavaScript 난독화에 대해 다루어볼려고 한다.난독화는 소스 코드를 보호하는 목적으로 사용한다.하지만 때론 이 기법이 악의적인 목적으로 사용될 경우 악성코드를 보호하는 기술로 이용된다.그렇기 때문에 악성코드를 분석하는 입장에서 난독화된 코드를 해석하는 기법은 매우 중요하다고 할 수 있다.이제 난독화가 무엇인지 어떻게 진행하는지 살펴보자. - 난독화란 ? : 컴퓨터는 이해할 수 있지만, 사람이 코드를 보았을떄 이해하기 어려운 수준으로 만드는 것이라 정의할 수 있다. - 난독화의 목적 1) 보안 장비 우회 2) 분석 난이도 증가 -> 분석 시간 지연 3) 결과적으로 악성코드 배포 기간 연장 - JavaScript를 이용한 난독화 실습 : 이제 JaveScript를 사용해서 난독화 실습을 하려고..
1. Cain&Abel 이란 ? 먼저 해당 툴은 "http://www.oxid.it/cain.html" 사이트에서 운영체제 버전별로 다운받을 수 있다.위의 그림을 살펴보면 Cain&Abel 툴에 대한 소개를 하는 것을 알 수 있는데 간단히 번역을 해보았다. Cain&Abel 툴은 Microsoft 운영체제 용 암호 복구 도구이다. 툴에 내장된 기능으로는 사전 공격, 무차별 대입 공격, 암호 해독, 무선 네트워크 키 복구. 스니핑 등이 있다. 2. ARP spoofing 이란? 시작에 앞서서 먼저 ARP 에 대해 먼저 알아보자.ARP(Address Resolution Protocol)은 간단히 정의하자면 MAC 주소를 IP로 변환하는 프로토콜 이라고 할 수 있다.MAC 주소는 L2 계층 IP는 L3 계층임..
먼저 쿼리를 살펴보면 pw 다음에 and 1=0 (항상 거짓) 이 있는 것을 확인할 수 있다.그다음 소스코드를 살펴보면 특별한 조건은 찾을 수 없다.다만 if($result['id'] == 'admin') 조건을 만족할때 문제가 풀리는 것을 알 수 있다. 먼저 패스워드에 임의의 값을 넣어다음 쿼리 반응을 살펴보았다.다음과 같이 패스워드에 정상적으로 값이 삽입된것을 알 수 있다. 이제 문제를 풀려면 어떻게 해야될까??? 1. 패스워드엔 임의의 값을 삽입하자.2. 이제 'admin' 계정을 || 연산자와 같이 삽입하자3. 1=0은 항상 거짓이므로 주석처리시키자. ?pw= ' || id='admin'%23 을 삽입했을때 다음과 같이 클리어 메시지를 확인할 수 있다.
먼저 소스코드를 살펴보면 다음과 같은 힌트를 확인할 수 있다. 1. $_GET[id] = str_replace("admin","".$_GET[id]); => "admin" 글자를 ""으로 replace 하고 있다.2. if($result['id'] == 'admin') => id == admin 조건을 만족해야 한다. 이제 문제를 어떻게 해결할지 고민해보자. 1. str_replace( ) 함수로 "admin" 을 필터링 하고 있다.2. 따라서 두 가지 솔루션을 생각했다.3. "admin" 대신 "ADMIN"을 입력하는 것이다. (하지만 이 솔루션은 8번 Troll 문제와 같기 때문에 사용하지 않았다.)4. "admin" 문자를 ""으로 치환 시 우회 방법을 고민해보자5. 만약 "adadminmin" 으..
먼저 소스코드를 살펴보자 그러면 다음과 같은 정보를 확인할 수 있다. 1. if(@erge("admin",$_GET[id])) => 'admin' 을 필터링 하고 있다.2. if($result['id'] == 'admin') => id == 'admin' 조건을 만족시켜야 한다. 이제 문제를 어떻게 접근할지 생각해보자. 1. erge( ) 함수에 의해 'admin'을 사용할 수 없다.2. 그러나 erge( )함수는 대소문자를 구별한다.3. 따라서 'admin' 대신 'ADMIN'을 입력을 한다. ?id=ADMIN 을 입력하면 다음과 같이 클리어 메세지를 확인할 수 있다.