Computer Security 썸네일형 리스트형 BOF : 쉘 코드 #include void main(){ char cmd[] = {'c','m','d','.','e','x','e','\0'}; //문자는 코드영역이므로 데이터영역에 있는 문자열이 아닌 문자를 사용 WinExec(cmd,SW_SHOW); //이 프로그램을 실행해달라는..(System()) ExitProcess(0); //exit(); 취약한 프로그램에서 실행했을 때 그 기능에 수행되도록 표준함수가 아닌 windows api 함수를 사용 } * 정적링크 : 프로그램 내에 코드가 전부 들어있어야 (ex : 표준함수) 동적링크 : 프로그램 내에 코드가 들어있지 않고 dll에서 불러옴 #include 2: void main(){ 00401010 push ebp 00401011 mov ebp,esp 00401013.. Socket Proxy * Socket Proxy FTP TCP IP Ethernet ==Socket Proxy Client ==> FTP Socks TCP IP Ethernet====> FTP Socks TCP IP Ethernet ===> FTP TCP IP Ethernet ---> 따라서 Application Level에 무엇이 있든 상관이 없다. ---> Socket 전용 Client와 전용 Server가 있어야 한다. 실습> 1. CentOS(linux) 2개(*.*.*.200 : Socket Proxy Client, *.*.*.210 : Socket Proxy Server), Windows(*.*.*.110) 가 필요하다. 2. source forge에서 ss5와 다른 라이브러리들을 설치한다. # rpmbuild -.. Proxy서버 + 웹 proxy server Proxy : 역추적 회피에 이용한다. - client-server 사이에서 데이터를 중계하는 역할 - 원래 기능은 네트워크 트래픽을 줄이고 데이터 전송시간 향상시킴(허용된 사용자만 이용할 수 있게 하도록) 1. 웹 프록시 서버(HTTP protocol을 해석한다) * Proxy type 1. Transparent : "via" 부분은 서버의 종류 : "x-forwarded-for" 부분은 실제 client의 아이피 : 이것들을 헤더에 포함시켜서 보냄(역추적을 회피할 수 없음) 2. Anonymous : "via"만 포함해서 보냄 ==> Proxy server라는 것 까지만 알 수 있음 3. High Anonymous : 일반 사용자와 구별이 안됨 실습) Squid proxy 클라이언트 - 프록시 - 서.. registry 편집 소스코드(마우스속도변경) * Win32 API : Windows에서 쓸 수 있는 32비트용 application 함수 제공 * 레지스트리 조종 함수들은 IN : call by value , OUT : call by reference로 이해하면 된다. * 레지스트리도 파일 입출력에서처럼 value에 접근하려면 key를 먼저 열어야 한다. Win32 -> Win32 프로젝트 -> 빈프로젝트 #include #define DATA "3" int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow){ HKEY key; RegCreateKeyEx(HKEY_CURRENT_USER, "Control Panel\\Mouse", 0, NULL, REG_OPTION_NO.. 루트킷(Rootkit) 루트킷(Root + Kit) : '은닉' 시켜주는 프로그램 1세대 - Application Level Rootkit : 프로그램 조작2세대 - User Mode Level Rootkit : 프로세스의 User 영역 메모리 조작3세대 - Kernel Mode Level Rootkit : 커널 영역 메모리 조작4세대 - Bootkit : 부트로더 조작 HTTP protocol - 웹 서비스에서 사용하는 전 세계적으로 가장 많이 사용하는 application protocol- Hyper Text를 전송하기 위한 약속(HTML: Hyper Text Markup Language를 전달하기 위한 프로토콜)* Hyper Text : 비 순차적 text- 초기 목적은 정보의 교환- 요청(Request)와 응답(Response)으로 작동한다. [Host] --- HTTP Request ---->[Server][Host] 전송 계층으로 TCP를 사용하므로 그 메시지의 크기가 크다면 TCP에서 쪼개서 보낸다.(HTTP는 분할하지 않음) * HTTP 1.0 vs HTTP 1.11. 3-way connection2. HTTP Request(index.html 달라..)3. HTTP Respons.. Process & Thread Process: 프로그램이 실행되어 메모리에 적재된 상태 Thread: Process 안에서 실행되는 작업의 단위 Process(껍데기) Thread(실제 일 수행하는 단위)(명령 이루고있는 작업의 단위) * 하나의 프로세스는 적어도 하나의 thread(주 thread)를 가지고 있어야 한다. 리눅스의 권한상승용 백도어 * 리눅스에서는 권한 상승용 백도어 방식을 이용한다.* 리눅스의 권한1. 읽기(R), 쓰기(W), 실행(X)2. 특수권한1) SetUID(4000) : 사용자가 파일을 실행하는 동안 파일 소유자의 권한을 획득한다.2) SetGID(2000) : 실행 파일을 소유한 그룹 소유자의 권한을 획득한다.3) Sticky Bit(1000) 3. UID의 종류- RUID(Real UID) : 실제 계정. 현재 로그인 된 실제 사용자의 ID- EUID(Effective UID) : 실행하고 있는 Process의 UID 실습 1)# vim uid_test.c... getuid() //RUID리턴 //root일 때 0값을 리턴... geteuid() //EUID리턴# chmod 4755 uid_test //setuid하면.. 파밍과 피싱 (dns spoofing) * spoofing : 속이는 것* 가짜 사이트 접속을 유도하는 방법1. 피싱 : 실제 도메인과 유사한 도메인을 이용하여 접속하게 하는 것ex) www.navor.com, www.never.com2. 파밍 : client가 실제 도메인으로 요청을 하지만 해당 도메인에 대한 ip 주소를 해커가 조작하여 미리 준비해 둔 가짜 사이트로 접속을 유도하는 방법 * 일반적인 dns requestHOST ---(request)---> DNS serverHOST DNS serverHOST UDP와 HTTP 통신과정 * UDP- 비 연결형 서비스- 데이터의 순서가 없고 흐름 제어 기능이 없다.- 오류검사는 헤더의 checksum으로만 검사하므로 미비하다.- UDP를 이용하는 대표적인 서비스로는 DNS가 있다.- Header 구성 : Source address, Destination address, Length, Checksum * Http Web 통신이 이루어지는 과정1. 호스트 파일을 확인한다.: [Windows] - [system32] - [Drivers] - [etc] - hosts: hosts 파일을 메모장으로 열면 ===> 127.0.0.1 localhost ===> 이 부분을 통해 localhost를 인식: **.**.**.** www.naver.com ==> 네이버에 접속했을 때 다른 ip로 이동할 수 .. Prev 1 2 Next