
Perl로 구현된 간단한 TCP/UDP 허니팟
Perl로 구현된 TCP/UDP 허니팟 프로그램
malbait용 README, 2/10/17
(참고로 제 비트코인 주소는 3A7yuqBcPAcVEM59bNAVQdTCmkxRb5JRgE입니다.)
(대체 주소도 있습니다. 역시 BTC용입니다. 일부 비트코인 지갑이 특정 주소를 지원하지 않는다는 제보를 받았기 때문입니다: 1PEDKUiUTxGNJ3XTPfXCTAjpzVzX1VZAme)
malbait에 오신 것을 환영합니다. 한 번에 모든 것을 해결하는 간단한 Perl 허니팟입니다!
Malbait은 허니팟, 즉 "악성코드 미끼(malware bait)" 프로그램입니다. 해커들의 시간을 낭비시키고 인터넷(또는 LAN)의 적대적 트래픽을 모니터링하도록 설계되었습니다.
Malbait은 선택된 또는 기본 TCP 포트와, 선택 시 UDP 포트에 일련의 가짜 서버를 생성합니다. 누군가 또는 무언가가 연결하면 그들의 입력이 로그 파일에 기록됩니다.
이들은 백그라운드 프로세스로 실행되므로, 종료하려면 컴퓨터를 끄거나 셸의 "kill"(또는 더 좋게는 "skill") 명령을 사용해야 합니다. netstat으로 모니터링할 수 있습니다. 제가 권장하는 방법은 다음과 같습니다.
sudo netstat -anp|grep perl
무엇이 리슨 중인지 확인하려면, 그리고
sudo skill -9 perl
충분히 봤다면 프로세스를 종료하세요.
참고: install.sh로 이 프로그램을 설치한 경우에는 다음을 실행해야 합니다
sudo skill -9 malbait
대신에 말입니다. 그래도 다음으로 모니터링할 수 있습니다: sudo netstat -anp|grep perl
또는 그냥 컴퓨터를 종료해도 됩니다. 물론 perl로 다른 작업을 하는 동안에는 malbait을 사용하지 마세요! 전용 "미끼(bait)" 머신을 권장합니다. 기본 포트를 실행하는 Raspberry Pi 같은 작은 장치나, 가능한 한 많은 포트(가급적이면 전체)를 리슨할 수 있는 큰 컴퓨터가 좋습니다.
Malbait은 기본적으로 TCP를 사용하지만, 자체적으로 UDP를 지원할 수 있고 두 프로토콜을 동시에 실행할 수도 있습니다.
이 프로그램은 수퍼유저 모드로 사용하는 것이 매우 강력히 권장됩니다. gainroot(sudo gainroot)를 호출하거나 sudo(sudo malbait)로 실행하세요. 처음 1024개 포트를 열려면 반드시 수퍼유저 권한이 있어야 합니다.
다음과 같이 실행합니다.
malbait -foo
매개변수 없이 실행하면 사용법을 설명하는 긴 텍스트를 출력합니다. "기본 설정 그대로" 시작하려면 다음을 실행하세요.
malbait -defaults
이 명령은 기본 포트를 열고 가능한 모든 곳에 서버를 생성합니다.
Malbait은 Telnet, FTP, SMTP, POP3, BGP, HTTP(훌륭하지는 않음), TR-69(훌륭하지는 않음), imap, systat, echo, 그리고 옛날 ASCII "time" 서버용 더미 서버를 만들 수 있습니다. 기본적으로 이들은 모두 기본 포트에서 열리지만, 포트를 직접 지정할 수도 있습니다.
포트 범위를 여는 것도 가능합니다. 예:
malbait -ports:1-1024
이러면 1~1024번 포트("잘 알려진" 또는 "제한된" 포트)가 열리고 적절한 곳에 가짜 서버가 생성됩니다.
Malbait 사용은 메모리 용량에 의해서만 제한됩니다. -trans_proto:tcpudp 및 -ports: 옵션을 사용하면 충분히 강력한 머신에서 모든 포트를 감시할 수 있고, 그렇지 않으면 컴퓨터를 다운시킬 수도 있습니다. 제 작은 Lenovo x200 노트북은 약 6000개 포트 정도까지는 처리하다가 그쯤 되면 이상해지기 시작하지만, 시스템마다 다를 수 있습니다. 새 컴퓨터가 정말 얼마나 강력한지 알고 싶으신가요? Malbait이 벤치마크를 제공할 수 있습니다. 개인적으로 저는 매우 강력한 컴퓨터에서
malbait -ports:1-65535 -trans_proto:tcpudp
를 실행하면 어떤 일이 일어나는지 정말 보고 싶습니다. 제 경험상 그중 10%만으로도 확실히 더 많은 악성 UDP 트래픽(주로 무료 전화를 사기 치려는 나쁜 사람들인 것 같습니다)이 있고, telnet은 그야말로 배양 접시지만, 그 너머의 미지의 영역에 대한 조사도 보고 싶습니다. 그만한 성능(그리고 방화벽을 완전히 비활성화할 능력과 배짱)을 가진 사람이 있다면요!
예를 들어 UDP 모드에서 FTP 서버를 열려고 하면( malbait -proto:ftp -trans_proto:udp ) 기본 포트는 열리겠지만 가짜 FTP 서버는 생기지 않습니다! UDP는 UDP 호환 서비스용 서버만 생성합니다. 해당 서비스는 asciitime, systat, echo, 그리고 특별한 "hacktime" 및 "fuzz" 메타 프로토콜입니다.
Hacktime은 영화 "Kung Fury"에서 영감을 받은 일종의 농담입니다. 구식과 신식 NTP 시간 서버를 만들고, 모두 1 또는 모두 FF를 전송합니다. 이는 Unix Millennium("hacktime-2036")의 롤오버 날짜나 새로 부팅된 시스템("hacktime-1900")을 흉내 내려는 아이디어입니다. 물론 실제 NTP 서버는 그것보다 훨씬 복잡하고 아마 제대로 작동하지 않을 것입니다. 하지만 당신이 NTP 서버라고 생각하고 공격하는 해커들을 확실히 혼란스럽게 만들 것입니다!
Fuzz는 말 그대로 자동화된 공격에 임의의 쓰레기 데이터를 던져서 방해하려는 시도입니다. 이 역시 실험적이며 제가 그렇게 심각하게 여기지는 않지만, 누군가에게는 유용할 수도 있다고 생각해서 남겨 두었습니다.
HTTP 서버는 "webpage.html"이라는 파일을 찾습니다. 파일이 없으면 대신 간단한 404 페이지를 생성합니다. 이것도 훌륭하지는 않습니다. 이 프로그램은 지루한 일반 웹 크롤러보다는, 당신에게 연결을 시도하는 색다르고 무작위적인 클라이언트들을 살펴보는 데 더 중점을 둡니다.
웹 브라우저에서 열면 콘텐츠 아래에 "HTTP/1.1 200 OK" 문자열이 많이 보일 것입니다. 이는 웹 브라우저에서 열도록 만들어진 것이 아니기 때문입니다. 잠재적으로 악의적인 웹 크롤링 봇을 가능한 한 오랫동안 연결 상태로 붙잡아 두기 위한 것입니다.
물론 기본 webpage.html을 자신의 파일로 자유롭게 교체해도 됩니다. 사용해도 좋지만, 이 파일은 데모용으로 설계된 것입니다.
-transblank 옵션을 사용하면 가짜 서버 생성을 재정의할 수 있습니다. 따라서 다음을 실행하면
malbait.pl -port:23 -proto:transblank
또는
malbait.pl -proto:telnet -transblank
malbait은 "Telnet 서버"를 생성하는 대신 클라이언트에게 빈 응답에 가장 가까운 것(단 하나의 캐리지 리턴)을 전송합니다.
컴퓨터 이색 기기를 좋아하는 사람들을 위해 다양한 옵션이 제공됩니다.
-noloop: 루프하지 않습니다. 즉, 한 번 연결된 후 각 서버를 종료합니다. UDP 서버라면 클라이언트가 "명령"을 입력한 후 종료합니다.
-no_multiplexing: TCP 서버가 멀티플렉싱(즉, 자식 프로세스에서 서버를 실행하는 것)하지 못하게 합니다. 이렇게 하면 메모리를 많이 절약할 수 있지만 권장하지 않습니다. nmap은 Malbait의 TCP 서버를 충돌시키는 것으로 알려져 있습니다. 자식 프로세스에서 실행하면 malbait이 이 충돌 및 기타 악의적인 연결 시도로부터 복구하고 로그로 기록할 수 있습니다. 따라서 "-no_multiplexing" 옵션을 사용하면 작업 폴더/디렉터리 전체에 발진처럼 고아 임시 파일이 흩어지게 될 것을 보장합니다. 그러면 매우 슬퍼질 것입니다. 또한 서버가 충돌하면 영구적으로 손실됩니다. TL;DR: 이 옵션을 사용하지 마세요.
-maxreq:nn 동시에 nn개의 TCP 서버를 생성할 수 있게 해 주므로 (잠재적으로) 그만큼 많은 "클라이언트"를 한 번에 서비스할 수 있습니다. 기본값은 2입니다.
-noblocking: 서버를 "비차단(nonblocking)" 모드로 실행합니다. 이 옵션은 별 의미가 없지만, -no_multiplexing과 함께 사용하면 nmap의 짓거리에 덜 취약해질 수 있습니다. 하지만 왜 그렇게 하고 싶겠습니까? 진지하게, 일부 클라이언트는 논블로킹을 선호하므로 문제가 있다면 이 옵션을 사용해 보세요.
-timeout:nn 클라이언트 제한 시간을 nn초로 설정합니다. 기본값은 30입니다. 하지만 자동화된 공격이 많다면, 컴퓨터에 연결되는 다른 모든 악성코드를 놓치지 않도록 이 값을 낮추고 싶을 수도 있습니다.
-report:filename.txt 보고서 파일 이름을 직접 지정할 수 있습니다.
-recvbuffer:nn: recv(수신 바이트)를 버퍼링하는 내부 변수를 nn 값으로 설정합니다. 기본값은 1024이므로, 한 번에 1k 이상을 처리하고 싶다면(비합리적인 욕구는 아닙니다) 여기서 변경하면 됩니다.
현재 malbait의 텍스트 출력은 약간... 지저분합니다. 디버깅 메시지와 상태 정보로 가득 차 있습니다. 개발자나 마조히스트가 아니라면 안전하게 무시해도 됩니다. 실제 오류 메시지는 로그 파일에 기록됩니다.
Malbait은 세 가지 유형의 로그 파일을 생성합니다. 컴퓨터에 연결된 모든 클라이언트의 개요를 제공하는 CSV 파일, 더 자세한 데이터와 분석을 담은 텍스트 파일, 그리고 malbait이 포트를 열고/닫고 "서버"를 생성/파괴함에 따라 자동으로 삭제되는 임시 파일(TEMP-16537 같은 이름)입니다.
임시 파일에 대해 사과드립니다. 그것은 우리를 충돌시키려는 경우에도 모든 트래픽을 확실히 캡처할 수 있는 유일한 방법이었습니다. 혹시 남아 있는 파일이 보여도 아무것도 하지 말고, 그냥 페이지를 새로 고치면 아마 사라질 것입니다.
사람들이 이 프로그램에 관심을 보이고 이메일 / 돈 / 러브레터 / 협박을 보내주시면 업데이트와 새로운 기능으로 지원하겠습니다. 예를 들어 ICMP 지원을 쉽게 추가할 수 있고, 웹 클라이언트 처리도 더 개선할 수 있습니다. 이 프로그램을 작성하는 동안 정말 즐거웠고, 지원하는 것도 정말 재미있을 것임을 압니다! 하지만 사람들에게서 소식이 없으면 그다지 유용하지 않다고 판단하고 다른 일로 넘어갈 것입니다. 더 멋진 기능을 보고 싶거나 성가신 버그 X를 고쳐주길 바란다면 꼭 연락 주세요!
제 이메일 주소는 [email protected]입니다 이 프로그램의 비트코인 주소(힌트, 힌트)는 16P267RxgkLsEDVEKwLGsfnUCJ6bfgyWKR입니다
읽어 주셔서 감사합니다. 제발, 제발 사토시를 보내 주세요!