Diggin em Walls 방화벽탐지, 그리고방화벽뒤의네트워크확인 by Ka0ticSH(asm.coder@verizon.net) 번역 : vangelis (vangelis@wowhacker.org ) Wowcode Team of wowhacker 서문이글은방화벽의확인, 탐지, 그리고침입테크닉에대해서다룰것이며, 더특별히방화벽이면에존재하는네트워크를확인하는능력을다룰것이다. 앞으로계속될버전에서는방화벽을무력화시키거나변조하지않고방화벽이면에있는목표네트워크에접근하는가능성에대해다룰것이다. 그리고포트리다이렉션테크닉에대해서도다룰것이다. 이글을읽기위해네트워킹, 유닉스운영시스템에대한지식, 그리고 nmap(http://www.insecure.org/nmap) 유틸리티가가까이에있으면좋겠다. 자살임무 : 방화벽없이인터넷에서버가연결하도록하는것이다. 방화벽을설치하고배치하는것에대한책을 Cheswick와 Bellovin가쓴이후방화벽은 ISP, 호스팅업체, 그리고심지어는개인사용자들의지속적인요구사항이되었다. 그리고비경험자가방화벽을설정하는것은파괴적이거나부주의하거나자살행위나마찬가지다. 보통네트워크또는시스템관리자들이그렇다. 관리자들은네트워크에대한경험을가지고있을지모르지만보안기술은제한적일수있다. 이것은잘못설정된방화벽으로이어지고, 과도하게자신감을가진관리자는그의네트워크가안전하다고생각해서자신의네트워크패킷트래픽필터링에중요한헛점을만들어낸다. 도입 : 현재보안시장에서두가지방화벽이인기를끌고있다. 그것은 Application Proxies와 Packet Filtering Gateways이다. 대부분의사람들의의견은 Application Proxies가 Packet Filtering Gateways 보다더안전하다는것에있다. 물론각각은장단점을가지고있다. Application Proxies는패킷이나가는것에대해엄격한만큼안으로들어오는패킷에대해더엄격하다. Packet Filtering Gateways는대규모회사네트워크에서찾아볼수있는데, 고도의수행능력을가지고있으며, 내부로들어오는트래픽이라는필수사항을가지고있다. 방화벽들은지난몇년동안많은시스템이나네트워크를안전하게해왔다. 즉, 악의적인패킷이나감시의눈길등으로부터안전하게해왔다. 하지만단순한방화벽은안전과는거리가멀다. 이방화벽들에서취약점들은자주발생한다. 각타입의방화벽을공격할새로운 exploit나그방화벽을우회할테크닉이발견되고있다. 가장큰취약점은방화벽의잘못된설정이다. 제대로설정되거나고안되었거나, 업데이트되고유지된다면방화벽은좀처럼침입하기가힘들다. 대
부분의해커들은이방화벽에달려들어스스로피곤한시간을보내지는않을것이다. 차라리방화벽이면에있는안전한시스템들의신뢰관계를공격하거나방화벽에의해필터링되지않는서비스를통해공격할것이다. 존재하는방화벽및이면탐지 : 각방화벽은그것자체의독특한확인스타일을가지고있다. 공격자는단순한스캐닝이나배너확인등을통해이확인시퀀시를이용할수있다. 이렇게해서버전, 타입, 그리고심지어는어떤규칙까지도확인할수있다. 이확인방법은중요하지않게보이지만일단방화벽의전략포인트를확인하면취약점이수면에떠오르게된다. 가장단순한탐지 / 확인테크닉은열린포트에대한간단한스캐닝이다. 어떤방화벽들은디폴트로열린포트에의해확인될수있다. CheckPoint의 Firewall-1은디폴트로 TCP 포트 256, 257, 258이열려있다. 반면 Microsoft의 Proxy Server는디폴트로 TCP 포트 1745와 1080이열려있다. 다른방화벽들도그들의디폴트포트가열려있다. nmap에몇가지인자를사용해실행시키면어떤방화벽을확인하거나방화벽의존재여부를확인할수있다. [root@localhost]# nmap -n -vv -P0 -p256, 257, 258, 1080, 1745 10.10.1.8 어떤숙달되어있거나또는심지어새로소개된공격자가어떤방화벽이나또는패킷필터링장애물에대한정보를제공하기위해어떤네트워크에대한이스캐닝을수행할것이확실하다. 어쨌던침입탐지시스템 (Intrusion Detection System, IDS) 은이스캐닝을포착하지는않을것이다. 아마도당신은당신의 IDS 설정을스캐닝을포착하도록설정할수는있지만 IDS는보통철저하게위협이되는 ( hardcore threatening scan ) 스캐닝만을기록한다. 또한주의배너 (note banner) 를통한방화벽확인기술도디폴트포트만큼이나많이사용된다. C: > nc -v -n 10.10.1.8 23 (UNKNOWN) [10.10.1.8] 23 (?) open Eagle Secure Gateway. Hostname: 이것이방화벽임을확인할더많은증거를수집하기위해 TCP 25(Send Mail Transfer Protocol, SMTP) 로 netcat을사용하기도하기도한다. C: > nc -v -n 10.10.1.8 25 (UNKNOWN) [10.10.1.8] 25 (?) open 421 10.10.1.8 Sorry, the firewall does not provide mail service to you.
노트배너를통해방화벽이존재하고있고, 25 번포트가필터링되고있음을알수있다. 방화벽의존재여부를확인하는제삼의방법은포트확인테크닉이다. 여러방화벽들은일련의숫자를돌려주는데, 이것을통해방화벽의타입과버전을확인할수있다. 예를들어, TCP 259(SNMP) 에 netcat을이용해다음과같이연결하면 Checkpoint Firewall-1이구현되어있음을알수있다. [root@localhost]# nc -v -n 10.10.1.72 259 (UNKNOWN) [192.168.21.1] 259 (?) open 30000003 [root@localhost]# nc -v -n 10.10.1.95 259 (UNKNOWN) [192.168.29.212] 259 (?) open 31300003 또다른하나의테크닉은디버깅툴을사용하는것이다. Traceroute는아주잘작동한다. traceroute 또는윈도우시스템에서는 tracert.exe는어떤호스트쪽으로활성화된 hop과양을탐지하는데사용되는네트워크디버깅유틸리티이다. 디폴트로 UDP 데이터그램패킷이나스위치디시즌으로 ICMP ECHO 패킷을보낸다. 이패킷들은 TTL (Time to Live) 필더로설정되어있다. TTL은 1로설정되어있다. 패킷 TTL 필더는호스트가탐지될때마다 1씩증가하고, 0의 TTL 필더를가진가장최근의탐지되지않은호스트에도달한다. 0의 TTL 을가진이패킷이라우터에도달할때라우터는디폴트로 ICMP error 메시지로원래의트레이스라우팅하는호스트에응답할것이다. traceroute는실행되고있는어떤서비스나어플리케이션에의해사용되지않을것같은높은 UDP 포트를선택하고, 그래서어떤에러도발생하지않을것이다. 그래서 traceroute는방화벽탐지를위해사용될수있다. 하지만어느정도의삭감이나리딩이사용자의마음속에가능해야하지만그것은가능하다. 다음보기는방화벽을찾아내기위한기본적인 traceroute 시도를보여준다. Traceroute: 이시나리오에서네트워크는패킷필터링장치에의해보호되고있으며, 이장치는 ping과 ping 응답 ( 각각 ICMP 타입 8과 0임 ) 을제외한트래픽을찾아내고, 모든초과패킷을막는다. 우리는어떤호스트들이이필터링 ( 방화벽일수도있고, 라우터가될수있다. 라우터의경우보안정책에반하는것이다.) 뒤에있는지알아보기위해 traceroute 프로그램을사용할수있고, 사용하도록시도할것이다.
[root@localhost]# traceroute 10.10.1.10 traceroute to 10.10.1.10 [10.10.1.10], 15 hops max, 20 byte packets 1 10.10.1.2 [10.10.1.2] 0.022 ms 0.024 ms 0.025 ms 2 10.10.1.3 [10.10.1.3] 1.327 ms 2.360 ms 2.380 ms 3 10.10.1.4 [10.10.1.4] 4.217 ms 4.612 ms 4.656 ms 4 10.10.1.5 [10.10.1.5] 4.927 ms 5.090 ms 5.238 ms 5 10.10.1.6 [10.10.1.6] 5.529 ms 5.812 ms 6.003 ms 6 10.10.1.7 [10.10.1.7] 56.921 ms 59.162 ms 61.762 ms 7 10.10.1.8 [10.10.1.8] 63.832 ms 63.682 ms 61.235 ms 8 * * * 9 * * * 10 * * * 10.10.1.8에서 Hop 7은방화벽으로추정된다. 물론맞지않을수도있다. 앞에서배웠듯이방화벽은라우터일수도있고, 또는어떤다른패킷필터링또는리다이렉션어플리케이션일수도있다. 우리의패킷은방화벽을탐지하기위해지나간다. traceroute의리눅스버전에서 ㅣ인자를사용해보자. [root@localhost]# traceroute -I 10.10.1.10 traceroute to 10.10.1.10 [10.10.1.10], 15 Hops Max, 20 byte packets 1 10.10.1.2 [10.10.1.2] 0.022 ms 0.024 ms 0.025 ms 2 10.10.1.3 [10.10.1.3] 1.327 ms 2.360 ms 2.380 ms 3 10.10.1.4 [10.10.1.4] 4.217 ms 4.612 ms 4.656 ms 4 10.10.1.5 [10.10.1.5] 4.927 ms 5.090 ms 5.238 ms 5 10.10.1.6 [10.10.1.6] 5.529 ms 5.812 ms 6.003 ms 6 10.10.1.7 [10.10.1.7] 56.921 ms 59.162 ms 61.762 ms 7 10.10.1.8 [10.10.1.8] 63.832 ms 63.682 ms 61.235 ms 8 10.10.1.9 [10.10.1.9] 62.926 ms 66.125 ms 67.032 ms 9 10.10.1.10 [10.10.1.10] 70.482 ms 71.273 ms 71.762 ms 10 10.10.1.11 [10.10.1.11] 73.192 ms 76.921 ms 82.325 ms 우리는제대로작동하지않는것처럼보이는디폴트 UDP 데이터그램 TTL 패킷을사용하는것대신 ICMP 패킷을사용하기위해 ㅣ인자를붙여 traceroute를사용하기로결정했다. traceroute 결과를유심히보면우리가호스트들과방화벽이면에있는시스템들을탐지할수있다는것을알수있다.
하나의일반적인시나리오설정은 DNS를제외하고모든연결과트래픽을막는방화벽이다. 이것은 UDP 포트 53을열어둔다. [root@localhost]# traceroute 10.10.1.10 traceroute to 10.10.1.10 [10.10.1.10], 15 hops max, 20 byte packets 1 10.10.1.2 [10.10.1.2] 0.022 ms 0.024 ms 0.025 ms 2 10.10.1.3 [10.10.1.3] 1.327 ms 2.360 ms 2.380 ms 3 10.10.1.4 [10.10.1.4] 4.217 ms 4.612 ms 4.656 ms 4 10.10.1.5 [10.10.1.5] 4.927 ms 5.090 ms 5.238 ms 5 10.10.1.6 [10.10.1.6] 5.529 ms 5.812 ms 6.003 ms 6 10.10.1.7 [10.10.1.7] 56.921 ms 59.162 ms 61.762 ms 7 10.10.1.8 [10.10.1.8] 63.832 ms 63.682 ms 61.235 ms 8 * * * 9 * * * 10 * * * 위의결과를보면마지막으로탐지된 hop은 10.10.1.1에있다. 우리는 DNS(UDP 53) 을제외하고모든것이막혀있다고추정할수있다. 우리는이결과를이용할수있다. traceroute를사용하는것은방화벽이면에있는목표를확인할수있도록해준다. 우리는몇가지를통제할수있는데, 사용되는시작 traceroute 포트 ( 매 probe에의해증가함 ), 보내진 probe의숫자 ( 디폴트로 3으로지정되어있음 ) 등을통제할수있다. 우리는또한우리가공격하는호스트와방화벽사이에얼마나많은 hop이있는지다음방법을사용할수있다. 출발포트의번호로스캐닝을시작한다. (target_port - (number_of_hops * num_of_probes)) - 1 우리는방화벽으로하여금우리가 DNS 퀘리패킷을보낸다고받아들이게함으로써 ACL(Access Control List) 를우회할수있다. 위에열거된공식 ( 실제공식은아니지만 ) 을이용해 traceroute 패킷을설정하는데도움이될수있도록할수있다. 또한방화벽들은패킷의내용을분석하지않는다는것을주목하자. 그래서패킷을조작하여방화벽을무력화시킬수있다. ( 53 - ( 8 * 3 )) - 1 = 28
새로조작된패킷은접근가능한포트번호를가지게되고, 그래서 ACL 제한을우회할수있다. 다음예를보자. [root@localhost]# traceroute -p28 10.10.1.10 traceroute to 10.10.1.10 [10.10.1.10], 15 hops max, 20 byte packets 1 10.10.1.2 [10.10.1.2] 0.522 ms 0.624 ms 0.625 ms 2 10.10.1.3 [10.10.1.3] 5.327 ms 6.360 ms 6.380 ms 3 10.10.1.4 [10.10.1.4] 7.217 ms 7.612 ms 7.656 ms 4 10.10.1.5 [10.10.1.5] 8.927 ms 9.090 ms 9.238 ms 5 10.10.1.6 [10.10.1.6] 9.529 ms 10.812 ms 12.003 ms 6 10.10.1.7 [10.10.1.7] 56.921 ms 59.162 ms 61.762 ms 7 10.10.1.8 [10.10.1.8] 63.832 ms 63.682 ms 61.235 ms 8 10.10.1.9 [10.10.1.9] 65.158 ms * * 9 * * * 10 * * * traceroute가보내진각 probe에대한포트번호를증가시킨다는것과스캐닝이목표의방화벽을지난후종결된다는것을생각하자. 왜냐하면첫번째 probe는 UDP 53(DNS) 의포트를부여했기대문에보내진다음 probe는 UDP 54를가진다. 이패킷필터링어플리케이션을위해수집된 ACL에바탕을두고 UDP 54는봉쇄된다. 더많은정보를구하고, 네트워크에대해좀더확인하기위해우리는 ACL을우회할상태로패킷을유지해야만한다. 그리고우리가 UDP 53에서포트를유지하고자하기때문에우리는각 probe의패킷포트번호의증가를비활성화하기위해또다른인자를붙일필요가있다. 보내진모든패킷이 ACL 요구에맞도록하고, 받아들여지기위해, 그래서우리가목표네트워크를추가로확인하기위해여기서는 traceroute1.4a5(http://www.packetfactory.com에서구할수있음 ) 가사용되고있다. [root@localhost]# traceroute -S -p28 10.10.1.12 traceroute to 10.10.1.12 [10.10.1.12], 15 hops max, 20 byte packets 1 10.10.1.2 [10.10.1.2] 0.522 ms 0.624 ms 0.625 ms 2 10.10.1.3 [10.10.1.3] 5.327 ms 6.360 ms 6.380 ms 3 10.10.1.4 [10.10.1.4] 7.217 ms 7.612 ms 7.656 ms 4 10.10.1.5 [10.10.1.5] 8.927 ms 9.090 ms 9.238 ms 5 10.10.1.6 [10.10.1.6] 9.529 ms 10.812 ms 12.003 ms
6 10.10.1.7 [10.10.1.7] 56.921 ms 59.162 ms 61.762 ms 7 10.10.1.8 [10.10.1.8] 63.832 ms 63.682 ms 61.235 ms 8 10.10.1.9 [10.10.1.9] 62.926 ms 66.125 ms 67.032 ms 9 10.10.1.10 [10.10.1.10] 92.332 ms 93.214 ms 96.016 ms 10 10.10.1.11 [10.10.1.11] 101.523 ms 103.273 ms 103.923 ms 11 10.10.1.12 [10.10.1.12] 104.516 ms 105.523 ms 105.682 ms 12 10.10.1.13 [10.10.1.13] 109.231 ms 111.122 ms 117.923 ms Firewalking: 우리가여전히 traceroute와 traceroute 패킷에대해이야기하는동안에도, 나는간단히 Firewalking 을다룰것이다. Firewalk는 traceroute처럼방화벽을지나간하나의 hop을정확하게소멸시키기위해계산된 IP TTL로패킷을만들므로서이루어진다. 예상된결과는패킷이방화벽에의해허용되고, 통과되고, 지시된대로소멸하는것이허용될것이다. 그래서 "ICMP TTL expired in transit" 메시지가나온다. 물론만약그패킷이방화벽의규칙에의해봉쇄된다면그것은떨어지고, 그리고우리는아무런응답을받지않거나또는 ICMP 타입 13 Admin Prohibited 필터패킷을받게될것이다. 연속적으로 probe를보내고, 어떤것이응답하고어떤것이응답하지않는지를기록함으로써게이트웨이상에있는접근목록이결정될수있다. 우리가시작하기전에우리는두가지정보를가지고있어야한다. 1) 방화벽이 kick in하기전에탐지된마지막게이트웨이의 IP 주소 2) 방화벽이면에있는, 즉방화벽으로보호된영역에위치한호스트의 IP 주소 IP 주소 1( 게이트웨이 ) 은우리에게웨이포인트 (way point) 로제공한다. 만약우리가이게이트웨이넘어로부터응답을받지못한다면우리의패킷이우리가통과하려고했던프로토콜이무엇이든그것에의해봉쇄되고있다고추정된다. 이미이해했을지도모르지만 IP 주소 2( 호스트 ) 는패킷의목적지로서사용될것이다. 다음은작동중인 firewalk의예이다. [root@localhost]# firewalk -n -P1-8 -ptcp 10.10.1.7 10.10.1.12 Firewalking through 10.0.0.5 (towards 10.0.0.20) with a maximum of 25 hops. Ramping up hopcounts to binding host... probe: 1 TTL: 1 port 33434: [10.10.1.1] probe: 2 TTL: 2 port 33434: [10.10.1.2]
probe: 3 TTL: 3 port 33434: [10.10.1.3] probe: 4 TTL: 4 port 33434: [10.10.1.4] probe: 5 TTL: 5 port 33434: [10.10.1.5] probe: 6 TTL: 6 port 33434: [10.10.1.6] probe: 7 TTL: 7 port 33434: Bound scan: 7 hops [10.10.1.7] port 135: open port 136: open port 137: open port 138: open port 139: * port 140: open 우리가볼수있듯이, 방화벽의 ACL 규칙은 firewalk의사용에의해우회된다. 소스코드를포함해더많은정보는 www.packetfactory.net/projects/ 에서찾을수있다. 다시 nmap으로돌아가자. 그이유는 nmap이일반적인스캐너처럼호스트를스캐닝하고, 어떤포트가열려있는지아니면닫혀있는지를말해주고, 추가로어떤포트가봉쇄되고있는지말해주기때문이다. 포트가필터링되고있다고응답이오는것의 3가지이유나상태가있다. 1) 어떤 SYN/ACK 패킷도받아들여지지않았기때문에 2) 어떤 RST/ACK 패킷도받아들여지지않았기때문에. 3) 시스템이 code 13(Communication Administratively Prohibited) 으로 ICMP 타입 3(Destination Unreachable) 으로응답 Nmap 은이모든조건을사용할것이고, 그것은필터링되고있는포트로간주한다, 예를들어, [root@localhost]# nmap -p21,23,53,80 -P0 -vv 10.10.1.10 Starting nmap V. 2.07 by Fyodor (fyodor@dhp.com, www.insecure.com/nmap/) Initiating TCP connect() scan against (10.10.1.10) Adding TCP port 21 (state Open). Adding TCP port 53 (state Firewalled). Adding TCP port 23 (state Firewalled). Adding TCP port 80 (state Open). Interesting ports on (10.10.1.10): Port State Protocol Service
21 open tcp ftp 23 filtered tcp telnet 53 filtered tcp domain 80 open tcp http 위에서출력된결과를보면몇개의포트가 방화벽으로막혀 있다. 우리는그것이필터링되고있는것의이유를알아보기위해 tcpdump 출력을사용할수있다. Raw Packet 전송및 HPING: Raw packet 전송또한방화벽너머의네트워크를확인하는데사용된다. Transmission 또한방화벽이면에있는네트워크를확인하는데사용된다. Hping은목적지포트에 TCP 패킷을보내므로서작동하고, 그런다음받은패킷을분석하고보고한다. Hping은받아들여지고, 봉쇄되고, 떨어지고, 또는거부된패킷을찾아내도록해준다. 그래서 ACL 규칙들을확인하게해주어좀더깊은탐색을하게한다. [root@localhost]# hping 10.10.1.7 -c2 -S -p21 -n HPING 10.10.1.7 (eth0 10.10.1.1) : S set, 40 data bytes 60 bytes from 10.10.1.1: flags=sa seq=0 ttl=242 id=65121 win=64240 time=144.4 ms 위의보기를보면기본적으로 SYN/ACK 패킷인 SA 플래그셋이붙은패킷을받은사실을통해우리는 10.10.1.7의 TCP 포트 21이열려있는것을볼수있다. 이것은어떤한포트가열려있다는것을알수있지만방화벽이존재하는지의여부는알수없다. 그래서좀더확인이필요하다. [root@localhost]# hping 10.10.1.10 -c2 -S -p80 -n HPING 10.10.1.10 (eth0 10.10.1.1) : S set, 40 data bytes ICMP Unreachable type 13 from 10.10.1.8 이 hping으로우리는 ICMP 타입의 13개의패킷을받았으며, 그것은 ICMP 관리자가금지한필터링패킷이다. 이몇가지의명령을통해 10.10.1.8이방화벽이라는것과, 10.10.1.10의 80번포트가봉쇄되어있다는것을확인했다. 방화벽이설치된호스트로부터우리가받을수있는또다른하나의응답은다음과같다.
[root@localhost]# hping 10.10.1.16 -c2 -S -p23 -n HPING 10.10.1.16 (10.10.1.1) : S set, 40 data bytes 60 bytes from 10.10.1.1: flags=ra seq=0 ttl=59 id=0 win=0 time=0.5 ms 이것은가능한 2개의항목중에서하나를보여준다. 1번은방화벽에의해수락되고, ACL 규칙에맞는패킷이다. 하지만호스트는그포트에듣지않고있다. 또는 2번은방화벽이거부한패킷이다. 이전에받은 ICMP 타입 13 패킷을사용하여우리는방화벽이우리가보낸패킷을허용하고있지만호스트는듣고있지않다는것을추정할수있다. 물론뛰어난관리자는방화벽이모든패킷을봉쇄하도록설정할때다음과같은결과를받게된다. [root@localhost]# hping 10.10.1.16 -c2 -S -p23 -n HPING 10.10.1.16 (10.10.1.1) : S set, 40 data bytes Source Port Scanning: 이기술은패킷필터링어플리케이션과상태를유지하지않는장치에적용된다. Cisco의 IOS가그예이다. 만약방화벽이상태를유지하지못한다면, 그래서연결이내부쪽인지외부쪽인지확인할수없을경우를생각해보자. 이경우에전송은필터링되지않고통과할수도있을것이다. 방화벽을통해허용된일반포트 ( 예를들면 UDP 포트 53) 에출발지포트를설정해보자. 이것은 nmap에 g 옵션을주어사용한다. [root@localhost]# nmap -ss -P0 -g 53 -p 139 10.10.1.15 만약열린포트의긍정적인출력을받게되면취약한방화벽이라고생각할수있다. 잘못설정된 ICMP 패킷 : 여기서는간단히언급하기로하겠다. 자세한것은 http://www.bliackhat.com을찾아보아라. 그문서에따르면확인된호스트로부터되돌아온 ICMP error 메시지를도출하고, 그것의존재를찾아내는다양한방법들을사용할수있다. 그방법들은다음과같다.
- IP 헤더분해 - 다른헤더길이필더 - IP 옵션필더 - IP 헤더에유효하지않은필더값사용 - IP 헤더에유효한않은필더값사용 - Fragmentation 오용 만약우리가모든프로토콜과포트의조합으로목표네트워크의전체 IP 범위를확인했다면그것은우리에게목표네트워크의토폴로지맵을가져다줄것이고, 접근목록을확인할수있도록해줄것이다. 결론 : 어떤네트워크를탐지하고확인하는방법들은많이있다. 이글에서는단지다른테크닉을발견하는것으로이어질몇가지주요사항만언급했다. 이문서는자신의네트워크가안전하다고믿고있는관리자들을목표로했다. 앞에서언급한테크닉들은방화벽의 ACL을포함해네트워크의토폴로지를확인하는데지속적으로사용될수있을것이다. 사실제대로설정된것은우회하기가힘들다. traceroute, nmap, hping, 그리고사용될수있는다른툴들은공격자가라우터, 방화벽을통해어떤경로로접근하는방법을찾도록도와준다. 많은취약점들이방화벽의 ACL에서의설정오류때문과로그, 트래픽, 그리고유지및관리의부족으로인해서발견된다. --Ka0ticSH asm.coder@verizon.net