반응형 분류 전체보기289 파일 관련 API GetCurrentDirectory -현재 실행중인 파일의 경로를 리턴한다. GetModuleFileName -현재 실행중인 파일의 경로와 파일명을 리턴한다.(2번째 인자 이용) SetFilePointer(hfile,IDistanceToMove,IDistanceToMoveHigh,dwMoveMethod) -파일 포인터의 위치를 설정한다. ▶hfile : 파일 핸들러 ▶IDistanceToMove : 주소 지정 ▶IDistanceToMoveHigh : 64bit 주소 지정에 사용 ▶dwMoveMethod : 움직일 방향 (시작 지점) -FILE_BEGIN : 파일 시작 지점 (0) -FILE_CURRENT : 현재 포인터 위치 (1) -FILE_END : 파일 마지막 지점 (2) ReadFile(hFile.. 2011. 5. 10. 2011.02.19 메모 http://ha.ckers.org/xss.html 2011. 2. 19. 2011.01.05 간략 메모 WebZIP : 웹사이트 긁어오는 프로그램 인터넷 연결이 불가한 환경에서 어쩔 수 없이 긁어와야하니 ㅇㅅ ㅇ 가끔 애용할 예정 2011. 1. 5. 세그먼테이션 (Segmentation) 코드가 있는 메모리 영역과 데이터가 있는 메모리 영역을 혼합하여 사용하면 일반 데이터를 인스트럭션 등으로 해석해버리는등의 문제가 발생할 소지가 다분하다. 따라서 코드 영역, 데이터 영역등을 구분하여 사용하는데 이것을 세그먼테이션이라고 한다. 페이징과는 달리 한 구획의 크기가 일정하지 않고 단순히 크기대로 자르는 대신 사용 용도에 따라 나누어지기 때문에 프로그래머는 세그먼트 레지스터만 설정하면 절대 주소 체계로 프로그래밍이 가능하고 사용용도 또한 논리적으로 제약이 가능해 메모리 액세스에 대한 차등 권한을 줄 수 있다. 실제로는 세그먼테이션과 페이징의 장점을 결합하여 사용된다. CPU가 생성한 논리주소는 세그먼트 레지스터(16bit)와 오프셋(32bit)으로 구성되고 세그먼트 레지스터의 인덱스를 사용하여 세.. 2010. 12. 28. 페이징 (Paging) 공간구역성 -프로세스가 특정메모리 위치에 접근을 하면 그 주변 메모리에 접근할 확률이 높음 시간구역성 -최근 액세스한 메모리는 다시 액세스 될 확률이 높음 문맥 교환이 일어날 때 프로세스 전체를 스와핑 하지 않고 액세스가 발생한 일정한 작은 영역에 한해서 스와핑한다. 이렇게 페이징을 사용하면 잦은 스와핑으로 인한 처리 지연 문제도 해결되고 한 영역의 크기를 일정하게 (일반적으로 4kb) 나누어 사용하면 외부 단편화가 발생하지 않는 대신 내부단편화가 발생할 수 있는데 마지막 한 페이지 등에 매우 한정적으로 발생하기때문에 크게 문제되지 않는다. 나누어진 실제 메모리 구획 : 프레임 나누어진 프로세스 구획 : 페이지 하지만 페이지가 메모리에 로드된 순서대로 프레임에 배치되면 코드가 뒤죽박죽이 되고 프로세스의 .. 2010. 12. 28. 2010.12.26 정리 예정 세그먼테이션,페이징 세그먼트 디스크립터 FS.GS.ES 세그먼트 레지스터 용도 SEH(Structured Exception Handling)의 정의 -윈도우에서 제공하는 예외처리 방식 -Termination Handling과 Exception Handling으로 분류됨 SEH 참고 사이트 ------------------------------------ http://ezbeat.tistory.com/284 http://serious-code.net/moin.cgi/SEH ------------------------------------ 세그먼트 참고 사이트 ------------------------------------ http://ezbeat.tistory.com/143 ----------------.. 2010. 12. 26. 유닉스 계열 NIC 속도 설정 NIC 설정 확인 #ethtool [인터페이스명] ex:)#ethtool eth0 NIC 설정 변경 #ethtool -s [인터페이스명] [속도] [전송모드] [자동설정여부] ex:)#ethtool -s eth0 speed 100 duplex full autoneg off 2010. 12. 24. mov EDI,EDI (Hot Patching) DLL 등을 리버싱하다보면 함수가 5개의 NOP 코드와 함께 MOV EDI,EDI로 시작되는데, 이 코드는 핫패칭을 위해 존재하는 코드이다. 핫 패칭은 필요한 코드를 시스템 재부팅 없이 즉각 메모리에 적용할 수 있는 기술로써, mov EDI,EDI에 앞의 5바이트 NOP 코드를 가리키도록 short JMP 명령을 패치하고, 5바이트 NOP 코드에 실제 long jmp 명령을 넣을 수 있게 MS에서 추가로 삽입한 코드이다. ※5바이트만 있으면 32비트 메모리 주소의 어디든지 jmp가 가능하다. 이렇게 핫 패칭을 사용하게되면, jmp 코드가 실제 코드를 덮어쓸 염려 없이 안전하게 후킹이 가능하다. 2010. 12. 21. LEA 명령과 MOV 명령의 차이점 LEA(Load Effective Address) 명령은 본질적으로 산술명령이다. 어떤 메모리 주소에 접근하는 작업을 수행하는 것이 아니라 일반적으로 주소를 계산하기 위해서 사용된다. 예를 들어 ESP : 0x0012FFBC 0x0040205E : "HELLO"인 경우에 mov EBP,ESP push 0040205E mov EAX,[EBP-4] lea EBX,[EBP-4]위 명령을 실행할 경우 EAX : 0040205E EBX : 0012FFB8의 값을 가지게 된다. 즉, EAX는 EBP-4가 가리키는 주소가 가지고 있는 0040205E 값이 저장되어 문자열 "HELLO"의 시작 주소가 저장되고 EBX는 EBP-4 값 그 자체인 0012FFB8 값이 저장된다 2010. 12. 20. IPTables 설정 ※체인 관련 옵션 -F iptables 체인 초기화 (체인 이름을 생략할 경우 룰 완전 초기화) -N 새로운 체인 생성 -X 체인 제거 -P 체인 정책 변경 (ACCEPT : 허용, DROP : 패킷 폐기) -A 해당 체인에 새로운 규칙 추가 -I 해당 체인 중간에 규칙 삽입 -R 해당 체인 위치의 규칙 내용 변경 -D 해당 체인의 특정 규칙 제거 ※일반 옵션 -s 출발지 주소/네트워크 -d 목적지 주소/네트워크 -p 프로토콜 -i 인터페이스 -j 동작 타겟 설정 (ACCEPT : 허용, REJECT : 연결 거부, DROP : 패킷 폐기, 체인 이름) --sport 출발지 포트 --dport 목적지 포트 --icmp-type ICMP타입 (사용 가능한 ICMP 타입 보기 #iptables -p icmp.. 2010. 12. 16. 플래그 설정 명령어 연산자 예시 설명 stc stc 캐리 플래그(CF)를 1로 설정한다. clc clc 캐리 플래그(CF)를 0으로 설정한다. std std 방향 플래그(DF)를 1로 설정한다. cld cld 방향 플래그(DF)를 0으로 설정한다. sti sti 인터럽트 플래그(IF)를 1로 설정한다. cli cli 인터럽트 플래그(IF)를 0으로 설정한다. 2010. 12. 9. PE 구조 PE(Portable Excutable) 구조 -PE포맷은 프로그램 실행 파일의 제일 첫 부분에 존재한다. DOS Header DOS Stub PE File Header Optional Header Section Table Sections IMAGE_DOS_HEADER IMAGE_NT_HEADER PE\0\0 IMAGE_FILE_HEADER IMAGE_OPTIONAL_HEADER IMAGE_SECTION_HEADER DOS Header -도스 헤더 부분은 IMAGE_DOS_HEADER라는 구조체로 구성되어 있다. typedef struct _IMAGE_DOS_HEADER{WORD e_magic;//magic numberWORD e_cblp;//Bytes on last page of fileWORD e_c.. 2010. 12. 9. 어셈블리 코드 해석 원본 : http://www.daniweb.com/forums/post382693.html#post382693 간단한 C++ 코드의 어셈블리 코드와 해석 -C++ 코드- int main() { short x=6; short y=9; short z; z = x+y; return 0; } -어셈블리 코드- .file "CSCILab03-1.cpp" ; This is the input source file. This will probably make it into the ; assembler output as some kind of debug record for later debugging. .text .align 2 ; .text is a section command (.data and .bss are ot.. 2010. 12. 1. Snort 명령 사용 -Snort는 snort.conf 파일 또는 명령행 옵션을 통해 여러 가지 명령을 설정할 수 있다. ex:)config nolog snort.conf 명령행 옵션 설명 alertfile 없음 Snort가 발생시킨 모든 경고를 저장할 파일을 지정할 수 있다. bpf_file -F BPF 포맷 필터를 포함하는 파일을 지정할 때 쓰인다. checksum_mode 없음 패킷 체크섬을 검사할 패킷의 종류를 지정할 때 쓰인다. 들어 갈 수 있는 값에는 all, none, noicmp, noip, notcp, noudp가 있다. chroot -t Snort의 새로운 홈디렉터리를 지정한다. 기본적으로 홈 디렉터리는 Snort 실행 파일이 위치하는 곳이다. deamon -D Snort 프로세스를 fork한다. (프로세스.. 2010. 11. 30. Snort 변수 변수의 정의 종류 사용법 예시 일반 변수 var 변수명 값 var DNS_SERVER 203.248.252.2 배열 var 변수명 [값1,값2] var INTERNAL_NETS [10.1.100.0/24,10.1.0.0/16] 동적 변수 var 변수1 값 var 변수2 $변수1 var DNS_SERVER 203.248.252.2 var MY_DNS $DNS_SERVER 동적 변수2 var 변수1 값 var 변수2 $(변수1:기본값) ※변수1이 존재하지 않는 경우, 변수2는 기본값 적용 var DNS_SERVER 203.248.252.2 var MY_DNS $(DNS_SERVER:10.1.1.2) 동적 변수3 var 변수1 값 var 변수2 $(변수1:?경고 메세지) ※변수1이 존재하지 않는 경우, 경고 .. 2010. 11. 30. Snort 로그 Snort 로깅 옵션 옵션 설명 -l 로그 파일을 저장할 디렉터리 경로 -h 홈 서브넷 -b 로그를 2진 형태로 저장한다. -L 2진 로그 파일 이름 snort -dev -l /var/adm/snort/logs -h 192.168.1.0/24 -위 옵션을 사용할 경우 /var/adm/snort/logs 디렉토리에 해당 IP 주소명의 디렉토리가 생성되고 세션별로 파일이 생성된다. ex)TCP:3039-80 (TCP 프로토콜,출발지 포트:3039, 목적지 포트 80) ※로그를 2진 형태로 저장하면 데이터를 사람이 읽기 편한 형태로 로그를 바꿀 필요가 없기 때문에 Snort의 패킷 수집 속도가 빨라진다. Snort 2진 형태 로그 snort -l /var/adm/snort/logs -b -b옵션을 사용하여 로.. 2010. 11. 30. Snort 모드 Snort 침입 탐지 모드 -Snort를 기본 IDS 모드로 실행하면 기본 출력은 log 하위 디렉터리의 alert라는 파일에 저장된다. 경고 모드 -패킷이 alert 규칙과 일치했을 경우 Snort는 다음 2가지 작업을 수행한다. 경고 보관소(alert facility)로 이벤트를 출력한다. 설정된 로깅모드로 가능한 많은 데이터를 기록한다. alert facility 옵션 옵션 설명 Full 경고 메시지와 전체 패킷 헤더를 포함한다. (기본값) Fast 타임스탬프, 경고 메시지, 출발지와 목적지 IP, Port만으로 구성된 간단한 형태의 경고를 만든다. Syslog syslog로 로그를 기록한다. 기본적으로 로그는 LOG_AUTHPRIV와 LOG_ALERT에 저장된다. Unixsock UNIX도메인 소.. 2010. 11. 30. Snort를 스니퍼로 사용 -Snort를 -v 옵션으로 실행할 경우 캡쳐한 패킷의 IP, TCP, UDP, ICMP헤더를 화면에 출력한다. -보다 많은 정보를 얻고 싶다면 -d 옵션과 -e 옵션을 사용해야한다. 옵션 설명 -d 애플리케이션 계층 데이터를 HEX와 ASCII 코드로 출력한다. -e 데이터링크 계층 헤드를 포함한다. -v 패킷 스니핑 모드로 동작한다. (TCP 헤더) snort -dev ※-v 옵션이 없이 -d 옵션과 -e 옵션을 동시에 사용할 경우 아무 옵션 없이 Snort를 실행하는 것과 같은 결과를 얻는다. 2010. 11. 30. Snort 플러그인 탐지 플러그인 Snort는 탐지엔진에서 플러그인 구조를 사용하고 있는데(detection-plug-ins 하위 폴더에 존재) 탐지 플러그인의 구조는 다른 개발자가 Snort 규칙과 연결된 플러그인을 쉽게 작성할 수 있도록 되어있다. 예를 들어 snortsam 프로그램이 있는데 이 프로그램은 공격을 탐지할 경우 방화벽을 재구성하여 패킷 차단이 가능하다. -공격지 주소를 1시간동안 차단 alert tcp $EXTERNAL_NET any -> $HOME_NET 21 (msg : "FTP EXPLOIT wu-ftpd 2.6.0 site exec format string overflow Linux"; flow:to_server, established; content: "|31c031db31c9b046cd8031c.. 2010. 11. 30. Snort 규칙 -규칙 헤더 alert tcp $EXTERNAL_NET any -> $HOME_NET 21 헤더 값 내용 alert alert, log, pass, dynamic, activate 출력 포맷을 의미한다. 이 출력 포맷은 연결리스트 트리 헤더의 맨 상위 부분과 비교된다. tcp TCP, UDP, IP, ICMP 사용되는 프로토콜을 의미하며 연결리스트의 상위 부분과 비교된다. $EXTERNAL_NET · 출발지 IP 주소를 가리킨다. (기본 설정은 any) any any, 포트 번호 출발지 포트를 의미한다. -> · 패킷의 방향을 가리킨다. $HOME_NET · Snort 규칙에서는 $Variables를 이용한다. 변수는 snort.conf파일의 맨 앞부분에서 정의되며 나머지 부분에서 그 변수를 사용한다. .. 2010. 11. 30. 이전 1 ··· 6 7 8 9 10 11 12 ··· 15 다음 반응형