ICS 보안을 위한 허니팟(Honeypot) conpot과 통합로그 분석 활용
위 실습을 진행하기 위해서는 이전 실습에서 도커 환경 구축을 먼저 진행해주어야한다.
Kali linux 칼리리눅스 docker 환경 구축 및 취약한 웹서비스 설치
도커 컨테이너를 자동으로 설치할 수 있는 스크립트를 다룬다. 그리고 다양한 웹해킹을 할 수 있는 환경을 자동화할 수 있도록 한다. 실습에서는 virtual box의 kali linux 환경을 이용하였다. 먼저, gi
withmoonlab.tistory.com
아래 주소의 깃허브를 위주로 이용하여 실습을 진행한다.
conpot이란 ICS 시스템에서 공격 타켓팅이 되는 현상들을 파악하기위한 ICS 허니팟이다.
파일을 다운로드 받은 후, 도커를 빌드하고 실행을 시킬 것이다.
그리고 도커 안에 설치된 포트들을 칼리리눅스의 포트들과 포트포워딩을 해준다.
먼저 conpot.git 파일을 다운로드 받는다.
소스코드를 다 다운로드 받은 후, conpot폴더에서 설치해줄 것이다.
설치 과정은 매우 길다. 마지막 부분에 보면
Successfully built -
Successfully tagged conpot:latest와 같은 코드를 확인할 수 있다.
그 후, docker run을 이용해서 쉘을 시키는 것인데 502포트는 modbus 프로토콜이고, 이를 대상으로 확인한다.
하지만 엔터를 치자마자 아래와 같은 오류가 나타났다.
userland proxy: listen tcp 0.0.0.0:80: bind: address already in use
위의 오류는 80번 포트를 이미 사용하고 있는 프로세스가 있기 때문이다.
80번 포트를 사용하고 있는 모든 프로세스를 확인하고 싶다면
lsof -i TCP:80
80번 포트를 사용하고 있는 모든 프로세스를 종료하고 싶다면
kill -15 'lsof -t -i TCP:80'
kill -9 'lsof -t -i TCP:80'
그리고 이 포트 사용이 종료되었는지 확인하려면
lsof -i TCP:80
다시 해주었을 때 화면에 아무것도 나타나지 않으면 된다.
직접 해보니 이전 실습에서 juiceshop이라는 가상 웹서버를 사용하였는데, 여기서
80버트를 사용중인 것을 확인할 수 있었고 종료한 후, 다시 확인해주었다.
그 후, docker run을 하니 잘 실행되었다. 이 conpot은 계속 실행시키고 다른 cmd창을 열어
로그를 남길 것이다.
ifconfig를 통해 칼리리눅스의 ip주소를 확인해준다.
nmap을 이용해주면 열려있는 프로토콜 확인이 가능하다. 범죄자
입장에서 open 되어있기 때문에 공격을 시도할 것이고 모드버스의 프로토콜이 이와
관련된 데이터들을 수집 및 수정한다.
(모드버스는 mbap이다.)
또 다른 cmd창을 열어 메타스플로잇을 통해 공격을 할 것이다.
search modbus
해주면 scada 시스템을 이용하는 모드버스 정보들을 획득하는 여러 도구들을 볼 수 있다.
3,4,5번째는 스캐닝 기능들이고 나머지는 제품관련 도구이다.
3번 기능을 이용해준다고 설정하고 옵션을 보았다.
프로토콜 자체가 안 열려있으면 공격이 안 되지만 열려있기 때문에 공격 코드 대상으로
스캐닝을 진행해주면 된다.
칼리 리눅스의 ip를 입력해준다. 여기서 localhost로 입력해줘도 괜찮다.
스캐닝을 시작한다.
새로운 커넥션을 맺기 위해 계속해서 동작 하는 것을 확인할 수 있다.
slave가 존재하지 않다고 나오는데 프로토콜에서 공격을 계속하는 것이 쌓이고 있다.
아까 위에서 ftp나 다른 프로토콜 기능을 이용해주면 그와 관련된 기록이 쌓이겠지만
여기는 modbus의 id쪽이기 때문에 아래와 같이 나타나는 것이다.
이로써 허니팟의 목적은 여러 범죄자들이 사용하는 ip정보들을 미리 수집하고
어떤 유형의 공격들을 진행하는지 확인하는 것이란 걸 실습을 통해 배우고 넘어갈 수 있었다.