개발/네트워크 보안 22

FireWall

Firewall : 방화벽 1세대 방화벽 - 패킷 필터링 IP 헤더와 TCP헤더를 체크하여 필터링하는 방식이다. 장점 : 다른 방식보다 빠르고, 하드웨어에 의존적이지 않고, 기존 프로그램과 연동이 쉽다 단점 : 헤더 패킷 조작이 가능하고, 2,3세대 방화벽에 비해 사용자 인증 기능이 약하다. 2세대 방화벽 : - TCP 헤더에서 SYN값을 확인 후 처리 header안의 data까지 확인하여 처리.세션처리 SPI(Statefull packet inspection) 장점 : Session 정보 추적이 가능하다. 프록시 서버를 통해 연결되기 떄문에 내부 네트워크에 대한 정보를 숨길 수 있다. 단점 : 응용 계층에서 동작해서 네트워크에 부하가 갈 수 있고, 미리 정의된 애플리케이션에서만 수용 가능하고, 새로운 ..

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 % 이상이 필요합니까?"의 대답이 '아니요'인 경우 기본적으로 기능을 끄거나 설치하지 않거나 비활성화해야 합니다. 또한, 꼭 관리자 권한을 줄 필요 ..