보안vs해킹2011. 11. 5. 03:41


네이버에서의 해킹의 정의는 '컴퓨터 네트워크의 취약한 보안망에 불법적으로 접근하거나 정보 시스템에 유해한 영향을 끼치는 행위'로 규정하였고, 위키피디아에서는 해커의 개념을 '이득, 저항 또는 도전 등의 이유로 컴퓨터나 컴퓨터 시스템을 파괴하는 행위'로 말하고 있다. 두 거대 백과사전은 해킹에 대해 꽤 부정적 의미를 포함하고 있다.

하지만 원래 해킹에는 악의적인 의미가 없고, 정작 상대방의 시스템에 위해를 가하는 사람들은 cracker라고 부르고, 엘리트하고 우아하게 상대의 시스템을 유린하는 사람들을 해커라 부른다, 라고 주장하고 싶다. 여기서 쓰고자 하는 것도 상대(?), 목표물(?) 혹은 호기심의 대상의 시스템의 취약점을 찾는걸 다루지, SQL Injection이나 CSS (Cross Site Scripting) 같은 내용은 다루지 않으려고 한다. 위와 같은 내용을 공부하고 싶다면 유투브에 널린게 해킹 기술이니 거기서 습득해도 어리버리한 시스템들은 쉽게 낚아서 본인이 script kiddy임을 증명할 수는 있을 것이다.

해킹은 탐색 (Reconnaissance), 스캔 (Scanning), 침입 (Gaining Access), 접속유지 (Maintaining Access), 사후처리 (Covering Tracks)로 EC-Council에서 구분하고 있다.

탐색은 Nmap, hping, ping 등과 같은 툴로 손쉽게 이루어 질 수 있고 합법이다. (#hping 을 통해 5만비트의 데이타를 연속적으로 보내는 것은 불법이다.)

스캔은 Nessus, OpenVAS 등등이 있다. (불법은 아니지만 본인의 결백을 주장할 증거정도는 필요하겠죠 ex. NDA)

침입은 MetaSploit이 가장 많이 쓰이는 툴이다. (남의 네트워크 침입은 악의적이든 아니든 범죄에 속한다. 그리고 생각보다 우리의 통신내용은 구글신께서 다 감청당하고 있으니 클라이언트가 원하면 당신은 의외로 쉽게 잡힌다.)

접속유지는 컴맨드를 통해서 이루어지므로 딱히 툴이라고 볼게 없고, 사후처리도 알아서 지나갔던 자리 지우고 나오면 되는 거다.

앞으로 적어볼 내용들은 각 툳들의 사용법을 알아보면서 그러한 것들을 어떻게 방어하는지 Snort를 통해 보도록 하겠다.

참고1. BackTrack이라는 라이브DVD가 있다. 모든 보안이나 해킹에 관심있는 사람이라면 꼭 깔아봐야하는 OS이니 지금 읽고 계신 분들도 꼭 깔아서 설치해보기 바란다.

참고2. NDA (Nondisclosure Agreement)를 클라이언트와 작성하고 해킹하는게 법적인 분쟁을 피하는 가장 정석이다.

'보안vs해킹' 카테고리의 다른 글

CEH Chap 4. Zenmap  (0) 2011.11.10
CEH Chap 3. hping - Attach.  (0) 2011.11.09
CEH Chap 2. hping - Idle scanning, ...  (0) 2011.11.08
CEH Chap 1. hping?  (0) 2011.11.07
BackTrack 5 백트랙 5 설치하기  (2) 2011.11.06
Posted by 구텐모르겐
IT 이야기2009. 9. 16. 08:48
-PN (No Ping) 이 옵션은 Nmap의 탐색기능을 실행시키지 않는다. 일반적으로 Nmap은 액티브한 호스트를 찾기 위해 과중한 탐색명령을 수행하곤 한다. 기본적으로 port scans, version detection, 또는 OS 탐색과 같은 부하가 많이 걸리는 작업이 실행되고 -PN옵션을 이용해서 이러한 과부하를 줄여주면 지정된 타겟 호스트만을 검색하게 된다. 그래서 만약 클래스B의 네트웍(/16)을 스캔할시에 65,536개의 호스트가 액티브하다는 가정하에 스캔해야 하지만 위 옵션으로 리스트 스캔에서와 같은 결과물은 생략되어질 것이다. 이더넷 네트웍에서는 --send-ip가 설정되어있지 않다면 ARP스캔이 사용되어질 것이다.왜냐하면 Nmap은 Mac어드레스를 통해 좀더 자세히 호스트를 탐색하기 때문이다. 원래 이 옵션은 P0(숫자)로 사용되어졌지만 PO(문자)와 혼동되어서 PN으로 변경되었다.



-PS (TCP SYN Ping) 이 옵션은 Syn flag set의 빈 TCP패킷을 보낸다. 타겟 포트는 80이고 (nmap.h에서 DEFAULT_TCP_PROBE_PORT_SPEC에서 수정가능하다). 명령문은 -P와 같긴 하지만 T와 같은 포트타입의 규정과 같은 명령어는 사용되지 않는다. 예를 들어 -PS22, _ps25,80,113,1050,35000과 같이 사용될 수 있다. -PS와 포트번호사이에는 여백이 있지 않다는 것을 알아야 한다. 만약 다른 여러개의 탐색이 이루어 진다면 이는 병렬로 탐색되어진다.

SYN flag는 당신이 목표 호스트에 연결을 시도하는 것으로 보이게 되고 대부분의 목표 포트는 닫혀있고 RST(리셋) 패킷이 돌아온다. 만약 포트가 열려 있다면 SYN/ACK의 응답으로 두번째 단계인 TCP three-way-handshake가 이루어진다. Nmap을 실행하고 있는 컴퓨터에서는 ACK를 보내는 것이 아니라 RST를 보내고 이 RST패킷은 Nmap자체에서가 아닌 Nmap이 돌고 있는 시스템에서 SYN/ACK로 응답하게 한다.

Nmap은 포트가 열려 있건 그렇지 않건 상관하지 않고 RST이건 SYN/AcK이건 호스트가 응답한다는 것을 보는게 더 중요하다.

Unix에서는 오직 제한적인 관리자만이 raw TCP 패킷을 보낼 수 있다. 만약 연결이 성공적으로 이루어 졌거나 Econnrefused실패가 될 경우에는 TCP스택은 SYN/ACK나 RST를 받았음에 분명하고 호스트는 액티브하다고 검색되어진다. 만일 연결이 이루어지지 않고 타임아웃까지 시간이 지연될 경우에는 호스트는 다운으로 검색되어진다. 이것은 IPv6에서도 사용되어지지만 raw IPv6는 적용가능하지 않다.

-PA (TCP ACK Ping) TCP ACK ping은 SYN ping과 상당히 유사하지만 차이점은 SYN flag대신에 TCP ACK flag를 보낸다는 것이다. ACK 패킷은 TCP 연결이 이루어진 상태에서 정보를 알아보기 위한 것이어서 상대 호스트는 RST패킷으로 반응하고 프로새스에 대한 정보를 노출하게 된다.

-PA옵션은 SYN 탐색(80)과 같게 사용되어 지고 목표 포트에 대한 리스트도 같은 형태로 나타난다. 만약 권한이 없는 사용자일 경우나 IPv6일 경우는 위와 같은 차선책으로 탐색된다. 이 방법은 ACK를 보내는것이 아니라 SYN을 보내므로 완벽한 방법은 아니다.

SYN과 ACK를 동시에 보내는 이유는 방화벽을 통과할수 있는 방법을 최대한 알아보기 위해서이다. 많은 관리자들은 라우터와 방화벽에 기본적은 사용을 제외하고는 SYN 패킷을 막아놓는다. 이것은 외부에서의 연결시도를 저지하고 내부사용자들의 외부연결은 자유롭게 해놓았을 것이다. 이러한 상황에서 SYN ping 탐사(-PS)는 막히겠지만 ACK 탐사는 이러한 룰을 뚫을수 있을 것이다.

또 다른 형태로 호스트가 알지 못하는 패킷은 막는 시스템으로 예전에는 최신기술이었지만 지금은 대부분의 장비에 적용되는 기술이다. 리눅스의 Netfilter/iptables은 --state옵션으로 이 기능을 지원한다. 이러한 시스템에서는 SYN패킷은 차단되고 예기치못한 ACK패킷도 차단되므로 -PS와 -PA를 동시에 사용하는 것이 좋다.

원문링크:http://nmap.org/book/man-host-discovery.html
Posted by 구텐모르겐
IT 이야기2009. 9. 15. 08:22
네트웍을 감독하는데 있어서 가장 먼저 실행되어야 할 것은 외부에 관심대상이 될만한 호스트를 두지 않는 것이다. 모든 아이피에 대한 모든 포트를 검색한다는 것은 무의미하다. 물론 목적에 따라서 그 관심 대상이 달라지기는 하지만, 관리자의 입장에서는 제공하는 서비스에 관심이 있을것이고 네트웍 감독자는 아이피에 해당되는 장비들에 관심이 있을 것이다. 일반적으로 관리자는 ICMP Ping을 통한 로컬 네트웍에 관심이 있겠지만 외부검시관들(external penetration tester)은 방화벽을 피할수 있는 다양한 방법에 관심이 있을 것이다.



호스트 컴퓨터 탐색의 방법은 너무 다양해서 Nmap은 사용자가 커스터마이즈 사용을 제공하고 있다. 호스트 탐색은 ping이라고도 불리기도 하지만 이것은 ICMP echo request 보다는 훨씬 높은단계의 기술을 요구한다. 사용자들은 -sL 옵션을 통해 ping을 생략할수도 있고 -PN 옵션을 통해 작동을 제한 할수도 있고, 또는 임의적인 다양한 multi-port TCP SYN/ACK, UDP, SCTP,INIT, ICMP probe등을 사용할 수도 있다. 이러한 무작위적인 서치는 해당 아이피의 호스트에 active된 장비들에 대한 응답을 받기 위해서이다. 일반적으로 IP의 일부만 사용되어지는게 대부분이고, 특히나 10.0.0.0/8과 같은 서치에서 보면 알 수 있다. 필자의 회사에서도 10.0.0.0/8은 16백만개의 아이피를 사용할 수 있지만 검색결과 천여개의 IP만 사용되어짐을 알 수 있었다. 호스트 컴퓨터 탐색은 이렇게 간혈적으로 사용되어지는 IP들 중에서 사용되어지는 호스트를 검색해준다.

만약 호스트 검색 옵션이 사용되지 않으면 Nmap은 ICMP echo request를 보내고, TCP SYN패킷을 443포트로 보내고, 포트 80번에는 TCP ACK패킷을 보내고 ICMP timestamp request를 보낸다. 이러한 명령어는 -PE, -PS443 -PA80 -pp 옵션이다. 예외적으로 ARP스캔은 로컬 이더넷 네트웍에 사용된다. 범용적 Unix shell사용자들은 기본적으로 80포트와 443포트로 SYN패킷을 보낸다. 이러한 호스트 검색은 로컬네트웍에서는 충분할지 몰라도 보안감사를 위해서라면 좀 더 포괄적인 검색이 필요하다.

-P* 옵션으로 ping 타입을 정할수 있고 다양한 TCP ports/flags와 ICMP 코드를 통해서 방화벽을 뚫을 수 있다. 또한 ARP discovery (-PR)은 기본으로 설정되어 있는데 이는 -p*옵션보다 훨씬 빠르고 효과적이다.

기본적으로 Nmap은 호스트 검색이 시행되고 그 후에 온라인으로 되어 있는 컴퓨터들에 대해 포트검색이 실행된다. -sP옵션을 통해 호스트 검색을 어떻게 하는지 알 수 있고, -PN을 통해 호스트 검색을 생략하고 바로 포트검색을 할 수 있다. 다음과 같은 옵션들은 호스트 검색에 사용되어지는 대표적인 값이다.

-sL (리스트 스캔) 해당네트웍에서 간단한 호스트 정보만을 제공하고 타켓 호스트에는 패킷을 보내지 않는다. 기본적으로 Nmap은 호스트의 이름을 알기 위해 reverse-DNS를 내보낸다. 때로는 간단하게 정리된 정보가 더 유용하게 사용되어 지기도 한다. 예를 들어 fw.chi라는 시카고에 있는 파이어월에 모든 IP의 포트에 대해 스캔할수도 있지만 해당 리스트 스캔을 통해 목표 호스트의 액티브 여부를 알 수 있다. 만약 당신이 알지 못하는 호스트 이름이 나온다면 당신은 해당 호스트에 대해 좀더 조사해볼 가치를 느낄 것이다.

리스트 스캔이 목표 호스트에 대한 간략한 정보를 나타내지만 포트스캔, OS검색과 같은 높은 레벨의 스캔은 할 수 없고 ping스캔도 함께 사용될 수 없다. 만약 ping스캔은 적용시키고 싶지 않다면 -PN 옵션에 대해 자세히 읽어보라

-sP (핑스캔) 이 옵션은 Nmap을 통해 호스트를 탐색하고 액티브한 호스트의 리스트를 출력하는 값이다. traceroute나 NSE host script와 같은 옵션들도 함께 상용 가능하지만 그 이상은 아니다. 이것은 리스트 스캔과 같이 사용되기도 하지만 리스트 스캔보다는 좀더 직관적으로 출력된다. 이것은 타겟 호스트에게 의심을 줄만한 검색은 되도록 하지 않으면서 스캔을 한다. 공격자에게는 어떠한 호스트가 살아 있는가가 중요하지 모든 호스트의 이름과 IP가 중요한 것은 아니다.

시스템 관리자들도 이 옵션을 가치있게 사용될 수 있는데 살아있는 호스트의 검색이나 서버나 네트웍의 가용성에 대해 알아볼 수도 있다. 이것은 종종 ping sweep이라 불리기도 하고 pinging the broadcast보다는 좀더 유용하게 사용될수 있는데 보통의 호스트들은 broadcast에 대해서는 응답을 하지 않기 때문이다.

-sP옵션은 ICMP echo request, 443포트를 통해 TCP SYN을 보내고 80포트를 통해 TCP ACK를 보내고, ICMP timestam request를 기본으로 보낸다. 권한이 없는 사용자가 해당 옵션을 사용할때는 SYN패킷만 타겟 포트 80과 443에 보내지게 된다. 권한이 있는 사용자가 핑스캔으로 로컬 네트웍을 스캔할때는 --send-ip를 설정하지 않는 이상 ARP request를 보내게 된다. 활용적인면에서 핑스캔은 다른 탐색옵션과 함께 사용될수 있다. 어떠한 탐색타입과 옵션이 사용된다면 기본으로 적용된 옵션에 덧붙여 출력된다. 강력한 방화벽을 사용하는 네트웍을 탐색할때는 이 옵션이 효과적이다. 그렇지 않다면 방화벽이 응답하지 않음으로 호스트들은 스캔에서 많이 누락되어질 것이다.

-PN부터는 내일 다시 ...

원본링크:http://nmap.org/book/man-host-discovery.html
Posted by 구텐모르겐