일단 테크블로그😊

Python으로 Keylogger 만들어보기 (loggee) 본문

Project/Security

Python으로 Keylogger 만들어보기 (loggee)

^__^/ 2023. 4. 1. 02:41

파이썬의 pynput 모듈과 smtp 모듈을 통해 간단한 keylogger "loggee"를 만들어 보았다. 피해자의 keyboard input을 기록하고, log 파일을 이메일로 보낸 뒤 log파일을 삭제할 수 있다. 

 

소스코드는 다음 깃허브를 통해 확인할 수 있다. 

https://github.com/ben8169/loggee

 

그럼 loggee의 시연과정을 함께 살펴보자.

 

1.작동시켜보자. python 파일을 구동한다.

 

2. 실시간 logging 목록을 terminal 창에서 임시로 볼 수 있게 설정하였다.  잘 logging 된다.

 

3. 다른 화면에서도 작동되는지 확인해보자. 추가로 바탕화면에 log.txt가 정상적으로 생긴 것도 확인할 수 있다.

 

4. 키보드 왼쪽 방향키를 눌러 종료시켰다. 이메일이 설정한 주소로 정상 수신되었고, 추가적으로 log.txt가 로컬에서도 삭제된 것을 확인할 수 있다. log.txt를 확인해 보자.

 

5. 정상적으로 로그가 기록되어 있다. 각 key의 log 시간과, 가독성을 높인  concatenated log를 동시에 확인할 수 있다. 

로그 기록 시간또한 실제 시간과 잘 맞아떨어지는 모습이다.


추가) 백스페이스 기능도 잘 작동할까? wrong input을 wroooong inpuit로 입력하고 지운 뒤 제대로 입력하였다.

어떤 식으로 잘못 입력하여 어떤 식으로 수정이 이루어졌는지는 위의 개별 로그를 참조하여 자세히 추적할 수 있고, 피해자가 입력하고자 하는 메세지도 별도로 수정되어 가독성 있게 확인할 수 있다.


이상 loggee의 시연 및 간단한 사용설명이었다.  아래는 설계의 방향성 및 그에 따른 한계 및 보완점에 대해 정리하였다.

 

loggee 설계 방향성

  • 공격자 입장에서 최대한 은밀하고 안전하게 log 파일을 생성 및 반출하는 것을 기본 목표로 하였다. 따라서, log파일 생성 후 종료시 삭제하도록 설계했고, smtp모듈을 통해 Email로 log파일을 반출하였다.
  • 여타 keylogger 들의 log가 가독성이 매우 떨어지는 점을 보완하는 방향으로, 두 가지 형태의 log를 제시하여 공격자의 key 추적과 해석에 도움을 주고자 하였다.

한계 및 보완점 

  1. pynput의 한계로 복잡한 escaping key를 설정할 수 없었다. 그나마 입력이 적을 것으로 예상되는 왼쪽 방향키를 잡았는데, 피해자가 어떤 이유로든 키를 누르게 된다면 금방 logging이 풀리는 치명적인 단점이 존재한다. 보완하고자 다양한 문서를 찾아보았으나 보완 실패.
  2. 또한 실행과 escaping key등 전체적으로 수동적이다. 원격으로 조종하지 않는 한 심어두고만 가기에는 불안 요소가 존재한다.
  3. 자신의 Email 주소를 입력하여 로그인해야 Email 송신이 가능하다. 고로 역추적 당할 가능성이 존재한다. Dummy 이메일을 구해서 송신자로 설정하는 것이 유리해 보인다.
  4. logging 중에는 log파일이 노출되어 있어 피해자가 발견할 가능성이 있다. 이를 방지할 수 있도록 windows 탐색기에서 아예 은신할 수 있는 방법을 고민해 보면 좋을 것 같다.

 

질문, 피드백 환영합니다^^

 

***본 파일 및 내용 일체는 교육 및 학습용 외 어떠한 개인적 사용 목적도 없으며, 이용될 수 없음을 밝힙니다.***