
cowrie v3.1.0
Cowrie SSH/Telnet 허니팟 https://docs.cowrie.org/
.. SPDX-FileCopyrightText: 2014 Upi Tamminen [email protected] .. SPDX-FileCopyrightText: 2014-2025 Michel Oosterhof [email protected] .. .. SPDX-License-Identifier: BSD-3-Clause
Cowrie
Cowrie란 무엇인가
Cowrie는 무차별 대입 공격과 공격자가 수행한 셸 상호작용을 기록하도록 설계된 중간~높은 상호작용 SSH 및 Telnet 허니팟입니다. 중간 상호작용 모드(shell)에서는 Python으로 UNIX 시스템을 에뮬레이션하고, 높은 상호작용 모드(proxy)에서는 SSH 및 telnet 프록시로 동작하여 다른 시스템에서의 공격자 행동을 관찰합니다. LLM 모드에서는 대규모 언어 모델을 사용하여 공격자 명령에 대한 동적 응답을 생성합니다.
Cowrie <http://github.com/cowrie/cowrie/>_ 는 Michel Oosterhof가 유지관리합니다.
문서
문서는 여기 <https://docs.cowrie.org/en/latest/index.html>_ 에서 확인할 수 있습니다.
Slack
다음 Slack 워크스페이스 <https://www.cowrie.org/slack/>_ 에서 Cowrie 커뮤니티에 참여할 수 있습니다.
기능
-
에뮬레이션된 셸로 실행하도록 선택(기본값):
- 파일을 추가/제거할 수 있는 가짜 파일시스템. Debian 5.0 설치를 닮은 완전한 가짜 파일시스템이 포함되어 있습니다
- 공격자가
/etc/passwd같은 파일을cat할 수 있도록 가짜 파일 내용을 추가할 수 있습니다. 최소한의 파일 내용만 포함되어 있습니다 - Cowrie는 wget/curl로 다운로드하거나 SFTP 및 scp로 업로드한 파일을 나중에 검사할 수 있도록 저장합니다
-
또는 SSH 및 telnet을 다른 시스템으로 프록시
- 모니터링과 함께 순수한 telnet 및 ssh 프록시로 실행
- 또는 Cowrie가 QEMU 에뮬레이션 서버 풀을 관리하여 로그인할 시스템을 제공하도록 함
-
또는 LLM 백엔드 사용(실험적):
- 대규모 언어 모델(예: OpenAI GPT)을 사용하여 현실적인 셸 응답을 동적으로 생성
- 미리 정의된 응답 없이 모든 명령을 처리
- 일관된 세션을 위해 대화 컨텍스트를 유지
두 설정 모두에서:
- 세션 로그는
playlog유틸리티로 쉽게 재생할 수 있도록User Mode Linux <http://user-mode-linux.sourceforge.net/>_ 호환 형식으로 저장됩니다. - 파일 업로드를 위한 SFTP 및 SCP 지원
- SSH exec 명령 지원
- direct-tcp 연결 시도(ssh 프록싱) 로깅
- SMTP 연결을 SMTP 허니팟(예:
mailoney <https://github.com/awhitehatter/mailoney>_)으로 전달 - 로그 관리 솔루션에서 쉽게 처리할 수 있도록 JSON 로깅
설치
Cowrie를 설치하는 방법은 세 가지가 있습니다: pip, Docker, 그리고 git 체크아웃.
첫 허니팟이라면 pip와 Docker가 가장 쉬운 방법입니다.
Cowrie 자체를 수정하려는 개발 또는 고급 시나리오에서는 git 체크아웃을 사용하십시오.
세 가지 모두에 대한 전체 지침은
설치 가이드 <https://docs.cowrie.org/en/latest/INSTALL.html>_ 에 있습니다.
Docker
Docker 이미지 <https://hub.docker.com/r/cowrie/cowrie>_ 는 Docker Hub에서 사용할 수 있습니다.
-
빠르게 시작하고 Cowrie를 사용해 보려면 다음을 실행하십시오::
$ docker run -p 2222:2222 cowrie/cowrie:latest $ ssh -p 2222 root@localhost
-
로컬에서만 빌드하려면 다음을 실행하십시오::
$ make docker-build
PyPI
Cowrie는 PyPI에서 사용할 수 있습니다 <https://pypi.org/project/cowrie>_. 가상 환경에 설치하고
시작하려면::
$ mkdir my-honeypot && cd my-honeypot
$ python3 -m venv cowrie-env
$ source cowrie-env/bin/activate
(cowrie-env) $ pip install cowrie
(cowrie-env) $ cowrie init
(cowrie-env) $ cowrie start
cowrie init 는 현재 디렉터리에 구성 파일 etc/cowrie.cfg 를 작성합니다. 로그와 다운로드는 var/ 아래에 저장됩니다.
요구 사항
로컬에서 실행하는 데 필요한 소프트웨어:
- Python 3.11+
- python-virtualenv
관심 있는 파일:
etc/cowrie.cfg- Cowrie의 구성 파일(운영자 소유).cowrie init로 생성됩니다.src/cowrie/data/etc/cowrie.cfg.dist <https://github.com/cowrie/cowrie/blob/main/src/cowrie/data/etc/cowrie.cfg.dist>_ - 번들된 기본값이며, 대신etc/cowrie.cfg를 편집하십시오etc/userdb.txt- 허니팟에 접근하기 위한 자격 증명src/cowrie/data/fs.pickle- 가짜 파일시스템. 메타데이터(경로, uid, gid, 크기, 모드)와 공격자가 흔히 cat하는 작은 파일의 내장 내용(A_CONTENTS바이트)을 모두 담고 있습니다.fsctl로 편집하고make build-fs-pickle로 재빌드하십시오.src/cowrie/data/txtcmds/- 간단한 가짜 명령의 출력var/log/cowrie/cowrie.json- JSON 형식의 감사 출력var/log/cowrie/cowrie.log- 로그/디버그 출력var/lib/cowrie/tty/- 세션 로그,playlog유틸리티로 재생 가능.var/lib/cowrie/downloads/- 공격자로부터 허니팟으로 전송된 파일이 여기에 저장됩니다
명령
cowrie- Cowrie 시작, 중지 및 재시작fsctl- 가짜 파일시스템 수정createfs- 자신만의 가짜 파일시스템 생성playlog- 세션 로그를 재생하는 유틸리티asciinema- Cowrie 로그를 asciinema 파일로 변환
기여자
많은 사람들이 수년간 Cowrie에 기여해 왔습니다. 특별히 감사드립니다:
- Upi Tamminen (desaster) - Cowrie의 기반이 된 Kippo 개발에 대한 모든 노고
- Dave Germiquet (davegermiquet) - TFTP 지원, 단위 테스트, 새로운 프로세스 처리
- Olivier Bilodeau (obilodeau) - Telnet 지원
- Ivan Korolev (fe7ch) - 수년간의 많은 개선
- Florian Pelgrim (craneworks) - 코드 정리 및 Docker 작업
- Guilherme Borges (sgtpepperpt) - SSH 및 telnet 프록시 (GSoC 2019)
- 그리고 그 외 수많은 분들.