600 likes | 935 Views
Hacking & Security. Content. Basic Knowledge System Hacking Application Hacking Network Hacking Web Hacking Forensic Encryption. I, Basic Knowledge (1/4).
E N D
Content • Basic Knowledge • System Hacking • Application Hacking • Network Hacking • Web Hacking • Forensic • Encryption
I, Basic Knowledge (1/4) Hacking : 원래 해킹이라는 말은 MIT 공대의 컴퓨터 동아리에서 처음 사용한 단어로진짜 의미는 “작업과정 그 자체에서 느껴지는 순수한 즐거움”이라는뜻이다. 현재는 의미가 나쁘게 변질되어 다른 사람의 컴퓨터에 침입하여 정보를 빼내어 이익을 취하거나 파일을 제거,전산망을 마비시키는 등의 악의적행위를 뜻한다.정확한 의미를 따지자면 현재우리가 사용하는 해킹이라는 말은 Cracking 또는 Attacking이라고 하는 것이 맞다.
I, Basic Knowledge (2/4) Spoofing : spoof란 단어는 '속이다, 사기치다'라는 뜻으로 스푸핑이란 악의적 네트워크 침입자가 TCP/IP의 구조적 결함을 이용해 사용자의 정보를 빼가는 방법이다. (가로채기) Sniffing : sniff란 단어는 ' 코를 킁킁거리다' 라는 뜻으로 스니핑이란 송수신 되는패킷들이 거쳐가는 게이트웨이에 침투하여 메시지를 몰래 훔쳐 보는 방법이다 (도청과 비슷한 원리) Reverse Engineering : Reversing 또는 역공학이라고도 불린다. 자세한 내용은 나중에 3장 Application Hacking에서 설명하겠다.
I, Basic Knowledge (3/4) 툴키드: 툴키드 또는 툴키디라고 불리며 도구라는 의미의 Tool과 어린이라는 의미의 Kid가 합쳐져서 생긴 용어로 해킹에 대한 기본 지식 없이 다른 사람이 제작한툴들을 악의적 목적으로 사용하는 크래커를 뜻함.일반적으로 개념없는 어린 크래커를 비하하는 의미로 사용이 되며 Tool을 사용한다고 하여 무조건 툴키드라고 부르지는 않는다.전세계 대부분의 해커들은 자신 또는 타인이 제작한 보조 Tool을 사용하여 해킹을 한다.
I, Basic Knowledge (4/4) Hacking System Hacking WirelessHacking Network Hacking ApplicationHacking Web Hacking Database Hacking
II, System Hacking (1/14) System hacking : 시스템의 프로그램 취약점을 이용한 해킹 기법. 취약한 시스템을 공격하여 해당 시스템에 접속, 관리자 권한을 획득하는 것이 주목적이다. 원시적인 기법 부터 고급적인 수준을 필요로 하는 기법까지매우 다양한 기법이 존재 한다. 대표 기법 : Password Cracking, Backdoor, BOF (Buffer Overflow), FSB (Format String Bug) 등
II, System Hacking (2/14) 1. Password Cracking - 해킹 기법 중 난이도는 낮고 가장 강력한 공격이다. - 보안프로그램을 사용해도 안전할 수 없다. 2. Password Cracking 기법 종류 - Dictionary attack : 미리 작성된 사전 파일의 단어를 불러와 패스워드에 대입하는 공격기법 - Hybrid attack : 사전 공격보다 진화된 기법으로 사전 파일에서 불러온 단어에 숫자나 심볼을 추가하여 패스워드에 대입하는 공격기법- Brute force attack : 무작위 공격이라 불리며, 정확한 키를 찾을 때까지 가능한 키를 시도하는 공격기법. 시간은 오래 걸리지만 가장 강력하다고 할 수 있는 공격기법이다. 3. 취약한 패스워드 분류 - 길이가 너무 짧거나 아예 패스워드가 설정되어 있지 않은 경우. - 사전에 나오는 단어나 이들의 조합 - 키보드 자판의 나열 (1234, qwe, asd등) - 사용자 계정 정보에서 유추한 단어 (생일,이름 이니셜,주민번호 앞자리,전화번호 등)
II, System Hacking (3/14) Dictionary attack apple apply *****
II, System Hacking (4/14) Hybrid attack 1 apple 2 ******
II, System Hacking (5/14) Brute force attack ! a11aa @ Charset a ~ Z ` ~ ? 0 ~ 9 ******
II, System Hacking (6/14) 1. Backdoor - 허가 받지 않은 사용자가 네트워크에 들어갈 수 있을 만큼 허술한 부분을 일컫는 말 - 원래는 네트워크 관리자가 외부에서도 시스템을 점검할 수 있도록 빈틈을 만들어둔 데서 시작 - 최근에는 해킹에 취약한 부분을 일컫는 용어로도 사용된다. 2. Backdoor 기법 종류 - 로컬 백도어: 서버의 쉘을 얻어낸 뒤에 관리권한 상승을 할때 사용하는 백도어.시스템에 로그인 한 뒤에 관리자로 권한을 상승시키기 위한 백도어이므로 로컬 백도어를 이용하기 위해서는 공격자는 목표 서버에 반드시 하나 이상의 일반 계정이필요하다. - 원격 백도어: 원격지에서 관리자 계정과 패스워드를 입력하고 로그인 한 것처럼바로 시스템의 관리자 계정을 사용 할 수 있는 백도어.일종의 서비스를 제공하는 데몬(백그라운드 서비스)처럼 동작하며,네트워크에 접근 가능한 특정 포트를 항상 열어 놓는 경우가 많다. - 키로킹백도어: 패스워드 크래킹 백도어라고도 불리며, 인증에 필요한 패스워드를원격지에 있는 공격자에게 보내주는 역할을 하는 백도어.사용자가 누르는 키보드의 정보를 원격지에 보내거나, 특정 문자열 (가령 Password와 같은) 뒤에 입력받은 키보드의 정보를 원격지에있는 공격자에게 보내주는 역할을 한다.
II, System Hacking (7/14) - 시스템 설정 변경 : 레지스트리 변경이라고도 불리며, 원격지의 쉘을 얻어낸다기보다는 공격자가 원하는 대로 시스템의 설정을 변경하기 위한도구로 유닉스에서 프로그램 스케줄러로 사용되는 cron데몬을이용하는 경우가 많다. - 트로이 목마형: 겉으로는 일반적인 프로그램과 동일하지만 그 속에 백도어가숨겨져(융합되어져) 있어서백도어로 동작하는 경우를 말한다.윈도우에서는 웹 브라우저나 명령 창, 간단한 게임 등도 백도어와섞을 수 있으며, 이렇게 만들어진 백도어를 실행하면 원래 목적의프로그램도 실행되면서 동시에 백도어도 설치가 된다. - 거짓 업그레이드 : 운영체제 회사의 공식 업그레이드를 사칭하여 업그레이드 관련정보를 메일, 게시판 등을 이용해 전송하고 첨부되어있는 업그레이드 파일을 실행할 경우 시스템 파일을 수정하고 다른원격 시스템으로 부터의 접근을 허용시켜준다. - 그 외 : 네트워크 데몬이나 시스템 유틸리티를 수정하는 백도어, TCP/IP 프로토콜을 이용한 Shell Binding 백도어, Kernel 모듈을 수정하는 백도어,방화벽을 우회하는 백도어 등 다양한 변종 백도어들이 존재한다.
II, System Hacking (8/14) 1. BOF (Buffer Overflow) - 공격자가 큰 정보를 부족한 크기의 저장소에 저장하려 시도하는 행위 - 사용자가 프로그램에서 저장을 위해 할당한 것보다 더 많은 데이터를 입력하려고시도하는것이 일반적인 형태이다. - 보안의 세가지 영역을 침해할 수 있다. - 첫째로 가용성을 해치는 서비스 거부공격을 할 수 있다. - 두번째로 데이터를 변경하여 무결성을해칠수있다. - 세번째로 중대한 정보를 얻어가기 때문에 기밀성을 파괴할 수 있다.2. BOF의 동작원리 - 컴퓨터 프로그램에 의해 정보가 어떻게 저장되는가를 이용 - 메모리는 실행중인 데이터나 프로그램이 사용할 변수가 저장되는 영역 - 공격자는 데이터의 길이와 내용을 적절히 조정함으로써 운영체제의 스택이크래시되게 하여 특정코드가 실행되도록 한다. - 공격자가 보내는 데이터는 대개 특정 시스템에서 실행될 수 있는 기계어 코드와 복귀 포인터에 저장될 새로운 주소로 구성이 된다.- 이때 복귀 포인터에 저장될 새로운 주소는 다시 스택 메모리 공간을 가리켜서,프로그램이 공격자가 저장시킨 명령어를 실행하게 한다.
II, System Hacking (9/14) 3. BOF 예제 #include <stdio.h> void bof ( char* string) { char buff[16]; strcpy (buff, string); } void main () { char big_buff[256];int I; for (i=0 ; i<256 ; i++)big_buff[i] = ‘A’; bof (big_buff); }
II, System Hacking (10/14) 4. BOF 기법 종류 - 서비스 거부 공격 : Denial Of Service(DOS)는 스택에 과다한 데이터를 대입하여 발생시키며, 스택에 존재하는 다른 데이터를 덮어쓴다. 운영체제 구동시 사용되는 중요한 정보는 시스템이 올바로 동작하기 위하여 메모리 스택에 저장되거나 접근된다. 만약 BOF 공격으로 충분한 데이터가 메모리에 덮어 쓰여지면, 시스템은 정상적인 기능을 수행하지 못하고 중지될 것이다. 이러한 공격이 DOS 공격이며 복구하기 위해서는 시스템을 재부팅해야 한다. - 접근 권한 획득 : 공격자가 스택에 적당한 크기의 정보를 입력하여 복귀 포인터를덮어쓰는 방법을 사용하며, 공격자는 이러한 방법을 이용하여복귀 포인터가 원래 실행되어야 할 코드 대신 자신의 코드를가리키게 하여 실행시킨다.이 코드는 패스워드 해쉬 값을 출력시키거나 새로운 계정을 생성하는 것 등 접근 관련 명령으로 이루어 진다.
II, System Hacking (11/14) 5. BOF 공격에 대한 보호방법 - 특정포트를 닫거나 서비스를 중지시키는 방법 - 운영체제 제조사에서 제공하는 패치를 적용하는 방법 - 침입차단시스템을 이용하여 특정 트래픽을필터링 시키는 방법 - 중대한 응용프로그램에 대한 수시 점검 - 실행가능한 최소 권한으로 소프트웨어를 실행시키는 방법 * PS ) cmd에서 netstat –a 명령을 통해 현재 사용중인 모든 포트를 확인 할 수 있다.
II, System Hacking (12/14) 1. FSB ( Format String Bug)- Format String : C언어에서 일반적으로 Data (변수)를 입,출력문에서 일정한 형태로받아들이거나 출력하기 위해 사용하는 기호. - Format String Bug : FSB는 출력문에서 올바르지 못한 방법을 악용하여 공격자가 실제메모리 주소를 공격하여 원하는 값으로 변경하거나 시스템의 Root 권한을 획득하는 것2. FS의 종류- %d : 정수형 10진수 상수 - %f : 실수형 상수 - %x : 양의 정수 - %s : 문자열 - %n : * int ( 쓰인 총 바이트 수 )
II, System Hacking (13/14) 3. FSB 예제 - %x의 역할 : 메모리 주소값 찾기 #include <stdio.h> void main(void){ char *buffer = “wishfree\n%x\n”; printf(buffer); } =>결과는 wishfree문자열이 위치한 다음 메모리 주소가 wishfree와 함께 출력됨 - %n의 역할 : 메모리 변조 #include <stdio.h> void main(void]){ int i = 1234; char *str = “AAAAAA”; printf(“Before : %d\n”,i); printf(“%s%n\n”,str,&i);printf(“After : %d\n”, i); } => 결과는 Before : 1234 , AAAAAA, After : 6이 출력된다.인자값으로 받았던 문자열 크기가 i에 저장 되었음을 볼수있다.
II, System Hacking (14/14) 4. FSB 대책 - FBS는 잘못 사용되어진 format string 사용 함수로 인하여 발생하므로 개발자가 코드 작성시 printf명령문과 같이 format string을 사용하는 함수를 쓸 때정상적으로 사용한다면, 크게 문제가 생기지 않는다. 5. 주요 취약 함수 - printf - fprintf - intsprintf - snprintf
III, Application Hacking (1/6) Application hacking : 어플리케이션 해킹은 어플리케이션 해킹으로 검색 하였을때찾을 수 있는 정보가 거의 없다.어플리케이션의 해킹의 자식 개념인 역공학이 어플리케이션 해킹의 대부분을 차지 하기 때문이다.그러므로 어플리케이션 해킹 파트는 역공학 중점으로 설명한다. 대표 기법 : Reversing ( Reverse Engineering, 역공학)
III, Application Hacking (2/6) 1. Reversing - 소프트웨어 공학의 한 분야 - 이미 만들어진 시스템을 역으로 추적하여 처음의 문서나 설계기법 등의 자료를 얻어 내는 일을 말한다. - 시스템을 이해하여 적절히 변경하는 소프트웨어 유지보수 과정의 일부이다.2. Reversing 기법 - Decompiler를 이용하는 방법 ( 고급언어로 변환 ) - Disassemble (역어셈블)을 이용하는 방법 ( 저급언어로 변환 )
III, Application Hacking (3/6) 1. Decompiler: exe 파일이나 class 파일을 소스로 변환 시키는 도구디컴파일러를 사용하게 되면 다음과 같이 class 파일을 소스로 변환가능하다.이 소스의 일부를 수정하면 간단한 크래킹이 가능하다.2. Java Decompile : Java 언어로 제작되어진 class 파일을 디컴파일하여Java Source로변환하는 방식이다.일반적으로 많이 사용하는 Dbconn과 같은 Class 파일을 디컴파일하면 해당 데이터 베이스에 접근 권한( id, password)을 얻을 수도있다.
III, Application Hacking (5/6) 3. .Net Decompile : .Net기반으로 제작된 exe 파일이나 dll파일을 소스로 변환하는 방식이다.이 역시 디컴파일을 통해서 주요 알고리즘을 훔치거나 데이터베이스 권한을 따내고 암호화 방식을 해독하는데 사용될 수 있다.
III, Application Hacking (6/6) 1. Disassemble : 실행파일이나 dll파일을 어셈블 언어로 변환해주는 Decompile의 일종인 기법2. OllyDbg : 올리디버거는 실행파일을 역어셈블 하여 어셈블 코드로 변환해주는프로그램으로 크랙을만들때 가장 많이 사용 하는 프로그램이다.역어셈블에 대한 기본 개념과 올리디버거 사용법만 익혀도 간단한크랙을만들수 있는 편리한 프로그램이다.
IV, Network Hacking (1/15) 1. Network Hacking : 네트워크의 취약점을 이용한 해킹 기법. 네트워크의 취약점을 공격하여 정보를 획득하거나 원격 대상의 시스템이나 네트워크를 장악하는 기법.시스템 해킹 기법과 응용되어져 매우 다양한 기법이 존재 한다.2. 대표 기법 : ARP Spoofing, IP Spoofing, DNS Spoofing, MAC Flooding, ARP Redirect
IV, Network Hacking (2/15) 3. Network Hacking 순서
IV, Network Hacking (3/15) 1. Foot Printing - 정의 : 공격을 시도 할 지역에 관한 정보를 수집하는 작업 - 수집 정보 : Domain name, IP, Access control list, 침입탐지/방화벽 구축여부, 시스템 사용자 목록, 시스템 H/W 사양,사용중인 Network Protocol, 인증 메커니즘 - 사용 Tool : http://whois.nida.or.kr/kor/ 들어간 뒤 domain 검색
IV, Network Hacking (4/15) 2. Scanning - 정의 : 공격을 시도 할 표적들에 대한 진행 중인 서비스 점검 - 수집 정보 : 해당지역에 활동 중인 Host, 공격하려는 대상 Host가 현재 열어 놓고 서비스하고 있는 Port - 사용 Tool : Nmap, Winscan, Superscan
IV, Network Hacking (5/15) 3. Enumeration - 정의 : 이전 단계를 통해 수집된 정보를 바탕으로 유효사용자 계정 수집 및 취약한 시스템의 자원공유를 정리 수집 단계 - 수집 정보 : User, Group 이름, OS, Routing Table, SNMP 정보 수집 - 사용 Tool : Application 확인 -> Banner 수집(Telnet, netcat, rpcinfo) - SNMP 목록화 : solarwinds
IV, Network Hacking (6/15) 4. Gaining Access - 정의 : 수집된 데이터를 통해 공격 목표에 접근을 시도하여 접근권한 취득 - 수집 정보 : 패스워드 도청, 패스워드 파일 취득 - 사용 Tool : 패스워드 도청 -> tcpdump, Lophtcrackreadsmb, wireshark 파일 공유 brute forcing -> NetBIOS Audit Tool, Legion 패스워드 파일 취득 -> pwdump2
IV, Network Hacking (7/15) 5. Escalating privilege - 정의 : 시스템 권한 상향 조정 - 수집 정보 : Admin에 대한 정보 수집 및 탈취 - 사용 Tool : 패스워드 Cracking - john, Lophtcrack
IV, Network Hacking (8/15) 6. Pilfering - 정의 : 서버의 접근 확보 후 신뢰 된 시스템들에 대한 접근확보를 위해 필요한 정보 재 수집 과정 - 수집 정보 : 구성원들에 대한 정보 재 수집 과정 - 사용 Tool : Rhosts, cain&abel Cleartext패스워드 검색 -> 사용자 데이터, 구성파일, 레지스트리
IV, Network Hacking (9/15) 7. Covering Track - 정의 : 공격 대상에 대한 제어 권한을 취득한 후 자취 삭제 - 사용 Tool : 로그 삭제 -> Zap, Event Log GUI Toll 감추기 -> rootkits, file streaming 감사 불능화 -> auditpol / disable
IV, Network Hacking (10/15) 8. Creating Back Door - 정의 : 공격 대상에 대해서 재 침입이 용이 하도록,Backdoor를 다양한 경로에 설치해 둔다. - 사용 Tool : Cron, At, Netcat 9. Denial of Service - 정의 : 시스템 사용 불능 네트워크 부하를 가중 시켜, 네트워크, 망/시스템 전체에 심각한 영향을 끼침 - 사용 Tool : Flood, trinoo, smurf
IV, Network Hacking (11/15) 1. ARP Spoofing - 내부 네트워크내의 공격 대상 host의 arp cache를 변경한다. - 아래 그림은 공격자가 내부 PC 2대의 통신을 Spoofing 공격을 통해 감시하고 있는그림이다.
IV, Network Hacking (12/15) 2. IP Spoofing - IP Protocol의 인증 취약점을 악용하여, 공격자가 자신의 IP Address를 악용하고자 하는 호스트의 IP Address로 바꿔 IP 기반의 인증을 무력화 시키는 공격 - 공격 조건 : 공격 대상과 대상의 클라이언트는 서로 신뢰관계에 있어야 한다. - 취약점 : 인증 -> IP의 Source Number로 상대를 식별 및 인증 (암호화 과정이 없고, IP 헤더를 고칠 수 있음)세션보호 -> IP의 Sequence Number로 세션 인증 (Sequence Number는 추측이 가능하게 설계 되어있음)
IV, Network Hacking (13/15) 3. DNS Spoofing - 인터넷 창에 방문하고자 하는 사이트의 URL을 입력하고 접속을 시도할 경우 Fake 사이트로 이동 시키는 공격 기법 - 컴퓨터가 웹 사이트를 찾을 때 DNS 서버에 서버의 IP 주소를 찾아달라고 요청을하게 되는데, 이 질문과 응답을 중간에 가로채 공격자가 원하는 거짓된 응답을알려주는 공격 방법으로 실제로 올바른 URL을 입력하여도 잘못된 서버로 접속된다. - 공격 조건 : APR Spoofing과 같이 이루어져야 한다. (패킷을 가로채기 위함)공격자는 진짜 DNS Server보다 Client에 가까운 위치에 있어야 한다. (DNS response 패킷 도달 전에 위조 패킷을 보내기위함)
IV, Network Hacking (14/15) 4. MAC Flooding - switch 환경에서 sniffing 한다. - 위조된 MAC을 지속적으로 발생시켜 스위치의 ARP테이블을 혼란 시킨다. - OSI 7층의 1계층인 Hub로 만들어 모든 Port에 Broadcasting 한다. - 현재는 거의 사라진 공격이다.
IV, Network Hacking (15/15) 5. ARP Redirect - 공격자가 Gateway로 위장하여 나의 MAC주소가 라우터의MAC주소다라는 위조된arp reply를 broadcast로 네트워크에 주기적으로 보내어 스위칭 네트워크 상의 다른모든 호스트들이 공격자 호스트를 라우터로 믿게 한다. - 외부 네트워크와의 모든 트래픽은 공격자 호스트를 통하여 지나가게 되고공격자는 스니퍼를 통하여 필요한 정보를 도청할 수 있게 된다.
V, Web Hacking (1/13) 1. Web Hacking : 웹 사이트의 취약점을 공격하는 기술적 위협으로, 웹 페이지를 통하여권한이 없는 시스템에 접근하거나 데이터 유출 및 파괴와 같은 행위를말한다. 2. 대표 기법 : XSS , Cookie poisoning, Directory Traversal, File Upload, SQL Injection
V, Web Hacking (2/13) 1. XSS ( Cross Site Scripting ) - 악의 적인 사용자가 웹서버를 통해 다른 클라이언트의 컴퓨터에서 악의적인 코드를 실행시키는 기법 - 원래는 CSS라고 표기했으나 Cascading Style Sheet와 똑같아 XSS라고 바뀌게 되었다. - 사용자의 컴퓨터에서 자바스크립트가 실행 된다는 점을 이용한다. 2. 대표 기법 - Reflected XSS : 공격 스크립트가 삽입 된 URL을 사용자가 쉽게 확인할 수 없도록 변형 시킨 후이메일이나 다른 웹사이트 등에 올려 클릭을 유도하도록 하는 기법 - Stored XSS : 스크립트를 웹 서버에 저장하여 사용자가 해당 페이지를 클릭하는순간 스크립트가 실행되도록 하는 기법 (XSS 보안 처리가 안된 게시판에 공격자가 게시글에 스크립트를 삽입)
V, Web Hacking (3/13) 3. 게시판에 XSS 취약점을 이용한 악성 스크립트 코드 작성 화면
V, Web Hacking (4/13) 4. 사용자의 쿠키 정보가 노출된 화면
V, Web Hacking (5/13) 1. Cookie Poisoning - 쿠키 변조 또는 쿠키 중독 공격이라고 부르며, 쿠키에 저장된 파라미터를 공격하는 파라미터 변조 공격의 일종이다. - 일반적으로 중요한 정보를 보이지 않는 쿠키에 담아두기 때문에 다른 변조 공격보다 더 많이 사용한다. - 쿠키를 획득, 변조 함으로써 특정 계정에 대한 접근 권한을얻거나, 또한 사용자의 쿠키를 훔쳐서 ID, PW 없이 또는 인증 없이 사용자 계정을 얻을 수 있다.2. 대응 방법 : 쿠키에 중요한 정보에 대한 저장을 막거나 전송시 암호화 한다.
V, Web Hacking (6/13) 1. Directory Traversal - 웹 경로를 거슬러 가서 관리자가 유저에게 보일 생각이 없는 파일이나 디렉터리를열람하거나 실행시키는 공격. - 자료실에 올라간 파일을 다운로드할 때 전용 다룬로드 프로그램이 파일을 가져오는데 이때 파일 이름을 필터링 하지 안하서 생기는 취약점이다. - [../] 문자열 등을 리퀘스트패스안에 넣는 방법이 자주 사용된다. - [../] 문자열 필터링에 대비하여 [%60%60%2f]를 사용하기도 한다.
V, Web Hacking (7/13) 2. Directory Traversal 공격 시도 화면
V, Web Hacking (8/13) 3. 공격으로 다운로드 된 passwd파일을 열람하는 화면
V, Web Hacking (9/13) 1. File Upload - 파일 업로드 취약점은 공격자가 웹 사이트에 있는 게시판이나 자료실의 파일 업로드기능을 이용하여 공격자가 만든 특정 공격 프로그램을 업로드 하여 웹 서버의권한을 획득하는 공격 방법 - 공격에 성공 하였을 때에는 공격자는 웹 서버의 권한을 획득하며 웹 서버 권한으로시스템 내부 명령어를 실행할 수 있다.2. 대처 방법 - 첨부파일의 확장자를필터링하여 특정 확장자를 업로드 하지 못하게 한다.