상세 컨텐츠

본문 제목

무차별 대입 공격 도구 (Brute Force Attack Tool) - Ban_REMOTE_MSSQL

Server/Windows Server

by 클리엘 클리엘 2020. 11. 24. 13:01

본문

원격 데스크톱의 경우 원격 포트는 3389, MS-SQL Server의 경우 1433이 기본 포트입니다. 그런데 서버를 외부에서 접속 가능하도록 두면 이 2개 포트에 대해서 엄청난 대입 공격이 들어옴을 알 수 있습니다.

 

포트번호를 바꾸면 일시적으로는 공격 빈도가 줄지만 원격제어의 경우 금방 공격이 되살아나서 의미가 없고, 접속 가능한 IP만 제한적으로 열어두는 것이 제일 좋습니다. 다만 접속 가능한 IP를 특정할 수 없는 경우 해결 방법을 달리해야 합니다.

 

무차별 대입 공격에 대응할 수 있는 여러가지 방법이 존재하는데 그중에서 사용할 수 있는 Ban_REMOTE_MSSQL를 소개합니다. Ban_REMOTE_MSSQL은 Windows Server서버에서 원격제어와 MSSQL Server의 전용포트로 무단 접속시도시 이와 관련된 Log를 만들때 이를 감지하고 공격자의 IP를 차단하는 역활을 수행합니다.


1. 설치방법

 

- 우선 프로그램을 내려 받습니다.

Ban_REMOTE_MSSQL.zip
0.01MB

- 압축파일을 C:\Ban_REMOTE_MSSQL 폴더 아래에 풀어줍니다.

 

- Control Panel -> Administrative Tools -> Task Scheduler를 실행합니다.

 

- 오른쪽의 Create Task를 선택합니다.

 

- Name에 BAN_REMOTE를 입력하고 아래 Security Options에는 'Run whether user is logged on or not'을 선택합니다.

 

- Triggers 탭으로 이동해 New버튼을 눌러 새로운 이벤트를 등록합니다. Begin the task에는 On an event를, Log에는 Application을 선택하고 Event ID는 18456을 입력합니다.

 

- Action 탭으로 이동해 New버튼을 눌러줍니다. Action에는 Start a program을 선택합니다. 하단 Program/script에 'Ban_REMOTE_MSSQL.exe'를 입력하고 Start in (optional) 부분에는 'C:\Ban_REMOTE_MSSQL\'으로 프로그램의 폴더를 지정합니다.

 

- OK를 눌러 등록을 완료합니다. 아이디와 암호를 묻는 화면이 나오면 계정을 입력하고 OK를 눌러줍니다.

 

- 등록이 완료되었습니다.

 

- 같은 방법으로 MSSQL에 관한 스케쥴러를 하나 더 등록합니다. 등록 방식은 같고 다만 Name은 BAN_MSSQL, Trigger에서 Log는 Security로, Event ID는 4625로 설정한다는 것만 차이가 존재합니다.

 


2. 사용방법

 

1번에서 작업 스케줄을 등록하면 프로그램이 동작하기 위한 준비는 끝난 것입니다. 다만 필요에 따라 몇 가지 설정을 통해 프로그램을 제어해줄 필요는 있는데 이는 Ban_REMOTE_MSSQL.exe 파일과 같은 곳에 존재하는 ban_setting.ini 파일의 설정을 통해서 가능합니다.

 

해당 파일을 열어보면 다음과 같은 내용이 있음을 확인할 수 있습니다.

[Application]
REMOTE=true
MSSQL=true

[Rule]
FailedCount=3

[whitelist]
ip=192.168.0.1

Application영역은 프로그램이 어떤 상황에서 동작할 것인지를 지정하는 것입니다. 예를 들어 REMOTE=true는 원격 접속 영역에서 공격이 발생한 경우 차단 처리를 진행한다는 것을 의미하며 MSSQL=false로 지정하는 것은 MSSQL의 침입 공격에 대해서는 반응하지 않음을 의미합니다.

 

Rule에서 FailedCount는 침입 공격이 몇 회 정도 반복해 오는 경우 동작할 것인지를 설정하는 것입니다. 따라서 FailedCount값을 3으로 설정하는 것은 동일한 IP로부터 3회 정도 공격이 감지되면 해당 IP를 차단하게 된다는 것을 의미합니다.

 

whitelist는 지정된 IP에서 공격이 감지되어도 해당 IP는 차단하지 않음을 의미합니다. 만약 화이트리스트로 등록하고자 하는 IP가 여러 개일 경우 'ip=192.168.0.1,192.168.0.2,192.168.0.3'처럼 콤마(,)를 기준으로 IP를 등록해주면 됩니다.


3. 기타

 

Ban_REMOTE_MSSQL은 오픈소스 프로젝트이며 Git을 통해 소스를 살펴보고 변경할 수 있습니다.

 

hoon37/Ban_REMOTE_MSSQL: Windows Server (github.com)

 

hoon37/Ban_REMOTE_MSSQL

Windows Server. Contribute to hoon37/Ban_REMOTE_MSSQL development by creating an account on GitHub.

github.com

※ 해당 프로그램 사용으로 인한 부작용에 대해서는 책임지지 않습니다.

※ ini에서 FailedCount는 정확성을 보장하지 않습니다. FailCount를 3으로 하면 "3번 실패 시 작동한다."가 아니라 "3번 이상 실패 시 작동한다"쯤으로 해석하면 될 것 같습니다. LOG를 읽고 프로그램이 동작하는 시점에 다시 공격이 들어올 수 있는 등 여러 가지 제반사항이 발생하므로 IP가 Block 완료될 때쯤 실제 공격은 3회 이상으로 이루어질 수 있습니다.

※ Ban_REMOTE_MSSQL은 어디까지나 발생하는 EventLog를 기반으로 합니다. 실패에 대한 EventLog가 많이 쌓이면 그만큼 처리하는데 시간이 오래 걸릴 수 있으며 반대로 EventLog가 수시로 삭제되면 원하는 방향으로 프로그램이 동작하지 않을 수 있기 때문에 적절한 관리가 필요합니다.

 ini 설정 처리는 https://github.com/Enichan/Ini 여기에서 가져왔습니다.

관련글 더보기

댓글 영역