본문 바로가기

IT

Winpcap 프로그래밍 - 패킷 스니핑 (감청/분석) 하기 /* written by kaspy (kaspyx@gmail.com)*/ Winpcap 라이브러리 중에 pcap_open_live, pcap_compile , pcap_setfilter, pcap_next_ex 함수가 있다.각각의 함수를 활용하면 패킷을 로우레벨에서 분석할수 있다. 물론 다른 함수들도 사용되긴 하지만 주로 사용되는 함수는 4개라고 보면 될것같다.함수 레퍼런스 : http://www.winpcap.org/docs/docs_40_2/html/group__wpcapfunc.html#gae6abe06e15c87b803f69773822beca8 1. TCP 패킷 감청 프로그램 만들기1). pcap_open_live 현재 네트워크에서 사용하는 네트워크 디바이스의 패킷을 캡처하는 함수이다. 아래는 함.. 더보기
Bisection Method C언어로 구현하기 /* written by kaspy (kaspyx@gmail.com)*/ 수치해석에서 나오는 해를 찾는 방법이다.수학에서 이분법(二分法, Bisection method)은 근이 반드시 존재하는 폐구간을 이분한 후, 이 중 근이 존재하는 하위 폐구간을 선택하는 것을 반복하여서 근을 찾는 알고리즘이다. 간단하고 견고하나, 상대적으로 느린 방식이다. 참고 위키http://ko.wikipedia.org/wiki/%EC%9D%B4%EB%B6%84%EB%B2%95_(%EC%88%98%ED%95%99) f(x) = x^2 * sin(x) 로 주어졌을때 #include #include #define PI 3.1415926535897931 #define thshold 2 * pow(10,-4) double sinfx(d.. 더보기
TCP,IP,Ethernet 헤더 구조체 struct ether_addr{ unsigned char ether_addr_octet[6];}; struct ether_header{ struct ether_addr ether_dhost; struct ether_addr ether_shost; unsigned short ether_type;}; struct ip_header{ unsigned char ip_header_len:4; unsigned char ip_version:4; unsigned char ip_tos; unsigned short ip_total_length; unsigned short ip_id; unsigned char ip_frag_offset:5; unsigned char ip_more_fragment:1; unsigned ch.. 더보기
WinPcap 개발 환경 구축하기 예전에는 리눅스에서나 가능했던 raw 레벨 패킷 프로그래밍이 Winpcap 라이브러리를 통해서도 가능하게 됬습니다.사실 winpcap 프로그래밍이 나온지 조금 됬는데 개발환경 구축하는 내용부터 시작해야 할것같아서 포스팅을 합니다. * 라이브러리 및 설치파일 다운로드 하기* 라이브러리 레퍼런스http://www.winpcap.org/docs/docs_40_2/html/group__wpcapfunc.html 0. WinPcap 파일 설치파일 실행하여 설치1. WpdPack 라이브러리 압축 파일을 다운로드2. 다운로드한 압축파일을 임의의 디렉토리에 압출풀기 (저는 c:\ 경로에 압출을 풀었습니다.) 3. Visual Studio 2010 실행4. 프로젝트 -> 속성 클릭5. 구성 속성 -> VC++ 디렉토리6.. 더보기
recall, precision, accuracy 차이점 /* written by kaspy (kaspyx@gmail.com)*/ recall(재현률), precision(정확률), accuracy(정확도) 이 용어는 검색이나 정답률, 정보의질 등의 척도로써 중요한 평가요소로 사용되고 있는 용어인데, 가끔씩 많이 헷갈립니다.논문 내용중, 특히 데이터베이스 검색이나, 자연어 처리에서 자주 나오는 용어인데, 이참에 공부하게되어서 정리를 하게되었습니다. 예를들어 네이버 처럼 검색에 대한 정보를 제공해주는 서비스가 있다고 가정해봅시다. 인터넷 상에는 굉장히 많은 정보가 있겠지요?? 모든 데이터... 그걸 모든 정답 후보라고 할수있습니다. 어떤 정보를 요청했을때, 거기에 맞는 정보를 제공해주는 검색의 척도로써 위의 세용어가 사용됩니다. 사용자가 검색 시스템에 어떤 검색.. 더보기
제로보드 XE (1.2.1ver) 취약점 /* written by kaspy (kaspyx@gmail.com)*/ 예전에 웹해킹 공부를 하면서 했던건데, 생각나서 블로깅 합니다. 현재 최신버전(1.7.x)에서는 작동하지는 않지만, 웹 해킹쪽을 공부하시는 분이있다면 조금이나마 도움이 되었으면 합니다. 제로보드 eXpress Engine 버전도 php 관련 파일 업로드가 가능할 시에 웹쉘을 충분히 실행 시킬 수 있는 것을 개인적인 연구를 통해 확인할 수 있었습니다. 이 내용은 이미 취약점이 보고되어 패치 되었던 내용이지만 실제로 어떻게 구체적으로 웹쉘을 실행시키는지에 대해서는 나와 있지는 않습니다. 이 취약점 내역은 XE 1.2.1 버전이하 버전에서만 유효합니다. 제로보드 XE 1.2.1에서 취약점이 발생하는 소스 코드 구간은 아래와 같습니다.해당.. 더보기
테일러(Taylor) 급수 C언어로 구하기 무한 급수 중에 테일러(Taylor) 급수라는 놈이 있는데, f(x)의 값은 f의 테일러 급수의 충분히많은 항들을 더해줌으로써 요구되는 정확도의 범위안에서 근사 시킬수 있다 대표적인 간단한 테일러 급수로는 를 들수 있겠다. 과연 n을 무한데로 보내면 e^x 와 숫자와 수렴할까? 아래 코딩을 통해 알아보자. x 를 -2.0 에서 2.0 까지 증가시키며 n을 1부터 5까지 증가시키며 원래 e^x 와의 오차를 비교하는 프로그램이다. #include #include // programmed by kaspyx#define e 2.71828 //e는 근사치로 상수로 정의double power(double x,int pdg) // x를인자로 받아 pdg 제곱하여 결과를 리턴{ double pow=1; if ( pdg.. 더보기
해킹 프레임워크 메타스플로잇(Metasploit) 사용하기 /* written by kaspy (kaspyx@gmail.com)*/ 메타스플로잇 프레임워크는 취약점을 공유하는 사이트로써 취약점 DB에 존재하는 바이너리에 대한 자동화된 공격코드를 제공해줍니다. 따라서 해킹에 대해서 깊은 지식이 없어도 조금의 개념만 익히면 자동화된 공격을 통해 시스템의 권한을 획득하거나, 불법적인 바이러스를 유포하거나 악의적인 공격 또한 할 수 있습니다. 취약점의 종류는 여러 가지가 있지만 대표적으로 버퍼 오버플로우, 웹 취약점, 암호노출 등을 들 수 있습니다. 실제 테스트한 방법은 아래와 같습니다. 1. 메타스플로잇 DB에 존재하는 취약점 바이너리 다운로드2. 취약점이 있는 바이너리를 가지고 가상의 해킹환경 구축3. 메타스플로잇 프레임워크를 통한 해킹 시연 1. 메타스플로잇 DB.. 더보기
리눅스 쉘코드(Shell Code)만들기 /* written by kaspy (kaspyx@gmail.com)*/ 버퍼 오버플로우나 포맷스트링버그 등의 취약점을 이용해서 해킹을 하는데이때 임의의 데이터를 입력할때, 쉘을 실행 시켜주는 루틴을 넣어주는데 이것이 바로 쉘코드입니다.그럼 이번 장에서는 쉘코드를 어떻게 만드는지 써보고자합니다.리눅스상에서는 쉘을 실행시켜주는 명령어 함수가 뭐가 있을까요??system(), execve(), execpl() 등등이 있는데 비교적 사용법이 단순한 execve() 함수로 작성을 해보겠습니다.아래와 같이 간단한 코딩을 해보겠습니다. ** 테스트한 환경은 32비트 우분투 리눅스 9.x 입니다.** 1. 쉘코드 프로그래밍 하기 void main(){ execve("/bin/sh",NULL,NULL);}// comp.. 더보기
리눅스 시스템 해킹방어 메카니즘 및 해킹환경 구축하기 /* written by kaspy (kaspyx@gmail.com)*/ 컴퓨터 등장이래, 지난 30여년동안 해킹 및 보안 기술의 발달로 요즘에는 버퍼오버플로우 및 포맷트링 등의 해킹을 실험할수 있는 환경에 많은 어려움이 있습니다. 그래서 요즘버전의 리눅스 환경에 실제 버퍼 오버플로 같은 공격을 테스트 하기 위해선 몇가지 환경 설정이 필요합니다. 시스템 해킹에 대비한 리눅스의 메카니즘이 무엇이 있을까요??우선 알려저있는 대표적인 버퍼오버플로우(이하 BOF) 및 포맷스트링 버그를 들수있습니다.이두가지의 공격기법은 임의의 입력으로 인해 프로그램의 실행 흐름을 바꾸는 것을 기본으로 하는데, 이공격기법은 운영체제의 기본설정으로인해 막혀있습니다.아래와 같이 간단한 프로그램을 짜서 컴파일 해봅시다. 1. 스택 실행.. 더보기