
cowrie v3.0.12
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 허니팟으로, 무차별 대입 공격과 공격자가 수행한 셸 상호작용을 기록하도록 설계되었습니다. 중간 상호작용 모드(셸)에서는 Python으로 UNIX 시스템을 에뮬레이션하고, 높은 상호작용 모드(프록시)에서는 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 명령 지원
- 직접 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/repository/docker/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.10+
- 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)
- 그리고 그 외 많은 분들