SQL

웹해킹 2012.03.21 14:46
database 이란?
여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합

sql이란?
Structured Query Language 데이터베이스에서 조회, 입력, 수정, 삭제, 저장 하는데 사용 되는 언어


database 종류
1. mysql : 대표적인 오픈 소스 방식의 데이터베이스입니다. 기본적으로 mysql은 무료이며, 경제적으로 부담 없이 사용할 수가 있으며 유료 재품을 사용 하면 service를 받을 수가 있습니다. 주로 리눅스에서 사용 되며, apm 이라고 해서 아파치 웹 서버와 php언어를 함께 사용 되는 경우가 많습니다. 그래서 이번에 저희가 공부를 이 apm 환경을 설치해서 공부를 하게 되었습니다.

2. oracle : 세계에서 가장 널리 쓰이고 있는 대형 데이터베이스 서버라고 알려져 있습니다. 오라클은 오랜 기간 동안 안정성을 인정받았기 때문에, 안정성을 우선시하는 기업에서 사용하는 경우가 많이 있습니다. 다른 종류에 비해 상대적으로 고가이며 설정 및 관리에 전문기술자가 필요로 합니다.

3. ms sql : ms sql의 단점부터 말하자면 ms windows 계열인 server 에서만 사용할 수 있다는 단점을 가집니다. 반면 장점은 서비스가 잘되어 있고 ms에서 나온 개발툴인 visual studio와 호환이 잘되며, 사용하기 편리한 인터페이스를 제공해주는 장점이 있습니다. mysql 에서는 언어를 php를 사용 하지만 ms sql 은 asp 를 사용하는 경우가 대부분입니다.

database 구성 요소


sql 명렁어
접속 : mysql -u 계정 -p 비밀번호
종료 : mysql> exit


DB 생성 : Mysql>create database 이름 ;
DB 확인 : Mysql> show databases;
DB 삭제 : Mysql> drop database 이름;


테이블 생성 : Mysql>creat table 이름 ;
테이블 확인 : Mysql>show tables;
테이블 내부구종 확인 : Mysql>desc 이름;



데이터 입력 : Mysql>insert 테이블 이름(필드 이름) values(필드 값들);
데이터 검색 : Mysql>select * from 테이블 이름


데이터 수정 : Mysql>update 테이블 이름 set[...];
데이터 삭제 : delete from [...];

'웹해킹' 카테고리의 다른 글

SQL  (0) 2012.03.21
웹 해킹 툴 - Paros툴 기본 사용법  (3) 2012.01.26
1-1 클라이언트 스크립트 조작  (0) 2012.01.06
Posted by 초코무늬

PE! 1!

분류없음 2012.03.14 17:00


악성코드 분석에는 동적분석정적분석이 있습니다.
그중 정적분석에서 코드분석이 있습니다.

그 코드분석을 하기위해서는 PE구조를 알아두는 것이 좋습니다.


PE포맷 = 실행 파일 포맷

PE 형식은 근본적으로 윈도 OS 로더가 감춰진 실행 코드를 다루는 데 있어서 필수적인 정보를 은닉해 주는 자료구조입니다.


실행 파일 포맷을 왜 배워야 하는가?
리버스 엔지니어링의 관점에서 말씀을 드리자면, 4가지 이유를 들 수 있습니다.

- 매뉴얼 언패킹 시 IAT를 리빌딩 하려면 실행 파일에 대한 지식이 필요합니다.
자동화된 툴은 언제나 사람이 할 수 있는 일들의 대부분은 빠르게 처리하겠지만
모든 것을 처리해 주는 것은 아닙니다. 최소한 원리라도 이해하고 툴을 사용해야 합니다.

- 안티 리버싱 테크닉을 이해하고 우회하기 위해서 필요합니다.

안티 리버싱 테크닉 중에는 TLS callback과 같이 PE 파일 포맷과 관련된 단순하면서도
효과적인 방법들이 더러 존재합니다. 이러한 안티 리버싱을 기법을 습득하는데 실행
파일 포맷에 대한 전반적인 지식이 필요한 것은 아니지만 PE에 대해 익숙하면
어렵지 않게 이해할 수 있습니다.

- 코드 패치를 하기위해서는 실행 파일에 대한 지식이 필요합니다.

리버싱을 하다보면 가끔 기존의 실행 파일에 코드를 추가하거나 하는 경우가 있는데
이런 경우에도 마찬가지로 PE 포맷에 대한 지식이 필요합니다.

- 링커나 컴파일러를 제대로 이해하고 사용하기 위해서는 파일 포맷에 대한 지식이 필요합니다.

링커나 컴파일러가 제공하는 상당수의 옵션은 실행 파일과 밀접한 연관을 가지고 있습니다.


준비물

Hex에디터 : 저는 WinHex를 권장합니다.
PE파일 분석기 : 저는 Stud PE를 쓰겠습니다.
ollydbg : 프로그램 속을 볼려면 필요합니다.

PE의 전체적인 구조

보시다 시피 “PE 파일은 디스크 상의 모습과 메모리 상의 모습이 거의 같다"라는 것을 알아두시면 됩니다.


PE구성요소
PE는 DOS Header, DOS Stub Code, PE Header, Section Table 및 1개 이상의 Section으로 구성됩니다.


각 구성 요소의 시작 위치
DOS Header : PE 파일은 DOS Header로 시작합니다. 따라서 디스크 상에서는 파일의 첫부분이 DOS Header가 됩니다. 메모리 상에서 PE 파일은 ImageBase에서 시작하므로 DOS Header는 ImageBase에서 찾을 수 있습니다. calc.exe(계산기)를 StubPE를 이용하여 열어보겠습니다.

ImageBase 값은 01000000입니다. 메모리에 로드된 PE 파일의 시작점이 01000000번지라는 것을 의미합니다.

calc.exe(계산기)를 ollydbg로 열어 보겠습니다.

하단의 [데이터 윈도우]를 클릭하고 Ctrl+G(Goto)를 눌러 01000000을 입력합니다.

이동하여 살펴보면 주소 01000000에 데이터값 4D 5A(MZ)를 발견할 수 있습니다.

MZ은 DOS 개발자 중 한명인 Mark Zbikowski라는 분의 이니셜로 DOS header의 시그너쳐로 사용됩니다.












DOS Stub Code
: 윈도우용 애플리케이션을 도스 모드에서 실행시킨 경우 애플리케이션이 정상적으로 동작되지 않습니다. 이러한 경우 윈도우는 애플리케이션 대신에 Stub Code를 실행시킵니다. Stub Code는 DOS Header 바로 뒤에 위치합니다. DOS Header의 사이즈는 64bytes로 고정되어 있기 때문에 디스크 상에서나 메모리 상에서 DOS Stub Code는 시작점으로 부터 64bytes만큼 떨어진 곳에서 찾을 수 있습니다.

PE Header : 디스크 상이나 메모리 상에서 PE Header의 위치는 DOS Header에 있는 e_lfanew 값을 이용하여 계산할 수 있습니다. e_lfanew는 4byte 크기의 데이터로 DOS Header의 마지막에 위치합니다. e_lfanew에는 파일의 시작점에서 부터 PE Header까지의 오프셋 값이 저장되어 있습니다.
e_lfanew 값을 DOS Header 시작 주소에 더해주면 "50 45 00 00"으로 시작하는 PE 헤더를 찾을 수 있습니다. 이는 디스크상에서나 메모리상에서 모두 동일합니다.






Section Table : Section Table은 PE Header 바로 뒤에 위치합니다.
따라서 Section Table을 찾으려면 PE Header 시작 주소에서 PE Header 사이즈를 더해 주면 됩니다. 이는 메모리 상 PE나 디스크 상의 PE가 모두 동일합니다.


Section의 위치 : 각 Section의 위치는 Section에 저장된 Section Header을 통해서 확인 가능합니다.
PointerToRawData = 디스크 상의 Section의 위치를 가르키는 offset 값

VirtualAddress = 메모리 상에서의 section의 위치를 가르키는 offset 값

.text 섹션의 RawOffset 값이 0x400임을 알 수 있습니다. 이는 디스크 상의 .text 섹션이 파일의 시작점으로 부터 0x400 떨어진 곳에서 시작한다는 것을 의미합니다. 이를 확인하려면 마우스 오른쪽 버튼을 클릭한 후 "GoTo Section Start"를 선택하여 .text Secrion의 시작 위치로 이동합니다.


.text 섹션으로 이동 후 StudPE의 HexViewer의 하단 정보를 확인하면 파일 상의 위치(Offset In File을 체크해 주세요)가 0x400임을 확인할 수 있습니다. 지금까지는 Section Table에 위치한 Section Header의 PointerToRawData 값은 해당 Section의 파일 내 시작 위치를 알아내는 데 사용한다는 사실을 확인해 보기 위한 것이었습니다.

이제는 메모리에서 찾아보겠습니다. ollydbg를 이용하여 calc.exe(계산기)를 열어보겠습니다. 그 다음 ImageBase로 이동해 보겠습니다. 마우스 오른쪽 버튼을 눌러 메뉴를 띄운 후 Special->PE Header를 선택합니다. 이 메뉴는 데이터를 PE Header로 파싱할 때 사용합니다.


이번에는 VirtualAddress 항목을 봐야 됩니다. VirtualAddress 항목의 값이 0x1000인 것을 확인할 수 있으니 이는 ImageBase로 부터의 offset 값입니다. 따라서 .text 섹션의 메모리 상 위치는 ImageBase값인 0x01000000에 오프셋 값 0x1000을 더하면 됩니다. 그럼 0x01001000 번지로 이동합니다.

주의 깊게 살펴보면 0x01001000번지에 있는 데이터는 9A22D877인데 그림에서 살펴본 .text 섹션의 시작 번지에 있는 데이터는 EA22D877로 서로 다른 값을 가지고 있음을 알 수 있습니다.
지금은 이 부분에 신경쓰지 말고 메모리 상 섹션의 위치는 섹션 헤더의 VirtualAddress를 통해서 알 수 있다 사실만 기억하면 되겠습니다.

PE 파일은 디스크 상의 모습과 메모리 상의 모습이 거의 같다 !
지금까지 살펴본 결과로 DOS header에서 Section table까지의 구성은 디스크 상의 PE 파일이나 메모리 상의 PE파일 모두 같다 사실을 알 수 있습니다. 이는 디스크 상의 PE 파일이 메모리로 로드 될 때 DOS header 부터 Section table까지는 그대로 로드됨을 의미합니다. 차이가 발생하는 부분은 각 Section입니다. Section들의 디스크 상의 정렬 단위와 메모리상의 정렬 단위가 다를 수 있기 때문입니다.


출처 : zesrever의 지식펌프 http://zesrever.tistory.com/

Posted by 단신남

간단한 악성코드 분석툴(?)입니다.

툴이라기 보다는 사이트입니다. ^^;; 

사이트는 http://www.virscan.org/ 로 가시면 됩니다.

한글이라 보기 편합니다. 

첫 페이지에 적혀있듯이 의심되는 파일은 보내면 온라인상에서 악성코드로 의심되는 파일을 다양한 백신으로 쉽게 검사해 볼 수 있는 무료 진단 서비스입니다.

많은 백신이 모여 있기 때문에 백신에 따라 의심파일로 진단되거나 오진일경우도 있고, 모든 백신에 진단되지 않는 경우라도 간혹 새로운 악성코드가 포함되어 있을 수 있습니다.

제일 위쪽에 보시면 의심파일 업로드가 있습니다.(20Mb 용량제한이 있습니다.)

Rar / Zip 파일은 자동압축해제를 하지만 내부에 20개 파일보다 적어야 하고, 압축된 파일이 'infected' 또는 'virus'로 암호화된 경우 진단할 수 있습니다. 

찾아보기에서 파일을 찾아 올리고, 업로드를 누릅니다.


1단계 파일 업로드가 시작되고 2단계를 넘어 3단계에 파일체크가 실행됩니다.


여러 백신들을 거쳐 결과가 나옵니다.

테스트용으로 올렸는데 꽤나 많이 나왔네요;;;

제일 아래에 있는 클립보드에 복사를 누르시면,

깔끔하게 정리하실 수 있습니다.

 
이 사이트의 경우 검사결과에 나온 악성코드들은 어떤 영향을 주는지 본인이 잘 조사 해야겠죠 ^^;;

'악성코드분석' 카테고리의 다른 글

악성코드 분석툴 - VirSCAN.org  (0) 2012.01.26
악성코드 분석툴 - Anubis  (0) 2012.01.08
악성코드 분석툴 - ThreatExpert  (0) 2011.12.30
Posted by 단신남


티스토리 툴바