개발 335

Snoofing

스푸핑(Spoofing)의 Spoof은 ‘속이다, 사기치다 스니핑(Sniffing, ‘Sniff-코를 킁킁거리다’)은 네트워크상에서자신이아닌다른상대방들의패킷 교환을 훔쳐보는 행위를 의미한다. 스누핑(Snooping)의 Snoop은 ‘기웃거리다, 염탐하다’라는 뜻을 가진 단어 Passive Sniffing : 단순하게 지나가는 데이터를 취득하여 확인하는 방법, 단순 패킷 전달하는 환경에서 사용 Active Sniffing : 적극적으로 data를 획득하기 위해서 중간자공격을 통해 데이터를 탈취 IP Spoofing : IP Address를 위조하는 공격기법. 클라언트가 사용하는 IP를 탈취해 해당 권한을 획득 ARP Spoofing : MAC Address를 위조하는 기법으로 서버와 클라이언트의 MAC A..

DDOS

DDOS를 많이 들어봤는데 이게 뭔지 알아보고 갑니다. DoS(Denial of Service) DDoS(Distributed Denial of Service) DRDoS Attack(Distributed Reflection Denial of Service) 의 유형의 공격들이 있습니다. Flooding Attack은 다양한 Flag를 통해 Server에 처리하기 힘든 Packet을 전송하여 부하를 발생시킵니다. 1. SYN Flooding : TCP가 통신을 하기 전 연결을 먼저 맺어야 하는 연결지향성을 이용한 방법으로 3-way handshaking을 이용하여 공격자가 spoofing한 IP 주소를 통해 다량의 SYN 패킷을 대상으로 전달, 대기 큐를 가득 채워 새로운 클라이언트의 연결요청을 무시하도..

BOF

Buffer OverFlow에 대해서 알아보겠습니다. 다른 언어에서는 그렇지 않은데, C같은 언어를 사용할 때, 입력하라는 값을 초과하면 입력값이 메모리 영역에 쓰여지는 경우가 있습니다. 이 때문에 메모리 주소값을 조작해서 BOF공격이 가능합니다. 일단 리눅스 환경에서 BOF를 하기 전에 ASLR을 해지합니다. ASLR(Address Space Layout Randomization )이란 실행 할 때마다 주소가 바뀌는 기능입니다. randomize_va_space=0 : ASLR 해제 randomize_va_space=1 : 랜덤 스택 & 랜덤 라이브러리 설정 randomize_va_space=2 : 랜덤 스택 & 랜덤 라이브러리 & 랜덤 힙 설정 Stack Canaries 라고 Stack상의 변수들의 ..

CSRF

CSRF (Cross Site Request Forgery)에 대해 알아보겠습니다. 얼핏 보기에 XSS와 비슷해 보이는데, CSRF와 차이점을 알아보면 XSS는 클라이언트에서 cookie정보 빼와서 이것저것 나쁜짓 하는데 CSRF는 공격자가 의도된 행동을 피해자에게 하는 것 입니다. CSRF의 예를 들면, 다른 사용자에게 페이스북 타임라인에 "민지왔어염 뿌우"라는 글을 쓰게 시킬 수 있습니다.

SQL Injection 방어

Sql injection을 방어하는 방법중에 하나로 PDO를 사용할 수 있습니다. PDO는 쿼리문을 다이렉트로 보내지 않고, 바인딩해서 보내기 떄문에 SQL injection을 방어할 수 있고, prepare메소드를 이용해서 미리 컴파일된 SQL문에 파라메터를 변경해서 쿼리하는 형식으로 속도가 향상됩니다. 사용자 입력단에서 SQL 주석 처리하는 '--'을 제거하면 인젝션을 방어할 수 있나요? - 아닙니다 '#'과 /* 와 같은 것들을 사용할 수도 있습니다. Addslashes(), mysql_real_escape_string() 을 특수문자를 없애면 SQL injection을 다 방어할 수 있나요? - 아닙니다. 인코딩 방식의 차이를 이용하여 이를 우회하는 것도 가능합니다. DB보안에 UNIX 계열 OS..

SQL injection

SQL 인젝션 한번 보겠습니다. 한마디로 설명하면 로그인폼에 입력한 데이터가 DB로 가는데, DB로 가는 데이터 폼에 query문을 보내서, DB에 공격을 가하거나, 강제적으로 로그인을 시도하는 공격방법입니다. 자, 그러면 어떻게 하는지 봅시다. SQL = "Select * From Users" + " Where UserID = '"+ UserID +"' And Password = '" + Password + "'" 이런 쿼리 문이 있다면, 주석을 통해 뒤에 것을 주석 처리할 수 있습니다. [ 외부 입력값 ] UserID: admin'-- Password: 아무거나 [ 실행되는 쿼리문 ] Select * From Users Where UserID = 'admin'-- And Password = '아무거나..

The Security Development Lifecycle

안전하게 개발 하는 방법입니다. 뭐 듣고보면 다 뻔한 이야기들인데 Economy of mechanism Fail-safe defaults Complete mediation Open design Separation of privilege Least privilege Least common mechanism Psychological acceptability 코드 안전하게짜고 권한 관리 잘 하라는 말입니다. ASR(Attack Surface Reduction) - Reducing, Restricting 권한 줄이고 제한 단순한게 말하면 "이 기능은 사용자의 80 % 이상이 필요합니까?"의 대답이 '아니요'인 경우 기본적으로 기능을 끄거나 설치하지 않거나 비활성화해야 합니다. 또한, 꼭 관리자 권한을 줄 필요 ..

Denial of Service

DoS(Denial of Service) attack : 이름처럼 서비스 거부 공격입니다. 정상적인 사용자가 접근 할 수 없게 요청을 많이 보내 서버를 마비시키는 공격입니다. 가장 자주 발생하고, 방어하기 어렵습니다. 다양한 계층의 공격이 있는데 IP: bandwidth exhaustion attacks,etc TCP:Syn-flooding, etc Application: authentication attacks, SPAM,etc Syn - flooding : TCP연결 프로토콜의 취약점을 이용하는 방법입니다. IP spoofing : 공격자가 실제 아이피를 사용하면 쉽게 잡히기 때문에, 아이피를 조작합니다. DoS공격을 막기 위해서는 1. 컴퓨터 자원 늘리기 2. 서비스 리퀘스트 제한하기 3. 좋은 리..