티스토리 뷰
4년 전 즈음(2018.06)에 "무차별 대입공격(Brute Force Attack)"이 국내 대형 은행을 겨냥해 시도' 되었었다.
이 사건은 적어도 당시에 사건 관련자들이 밝혔던 내용에서는 다행히 실제 금전적인 피해로 까지는 이어지지는 않았다고, 공인인증서나 OTP가 해킹된 것이 아닌 만큼 출금/이체와 같은 서비스는 건드리지 못했을 거라고 했었지만, 정보유출이라는 측면에서는 꽤나 성공적이어서 고객 정보 56,000건이 유출되었었다.
해커들 사이에서 오래된 공격 방법이지만, 단순하고 자원이 많이 들지 않기 때문에 여전히 효과적인 "무차별 대입공격(Brute Force Attack)"에 대한 방어와 대응책으로는 무엇이 있을까?
[무차별 대입 공격을 방어하는 방법]
어느 한 가지 방법으로 무차별 대입 공격을 간단히 막을 수는 없지만, 기업 또는 개인은 공격에 필요한 시간과 컴퓨팅 리소스를 늘림으로써 공격자가 대상을 공략하는 시간을 늘릴 수 있다. 구체적인 방법은 다음과 같다.
- 길고 복잡하며 암호화된 비밀번호를 사용한다(256비트 암호화가 이상적).
- 비밀번호 해시에 솔트(salt)를 넣는다. 보안전문가들은 "문자열을 별도의 데이터베이스에 저장하고 비밀번호를 해시하기 전에 불러와 추가하는 방법으로 같은 비밀번호를 사용하는 직원이 서로 다른 해시를 갖도록 해야 한다"라고 말했다.
- 비밀번호 복잡성과 여러 계정에서의 비밀번호 재사용에 관한 정책을 직원에게 명확하게 전달한다.
- 특정 시간 내의 로그인 시도 횟수를 제한하거나 특정 횟수의 부정확한 시도 이후 비밀번호 재설정을 의무화한다
- 비밀번호 인증에 속도 제한을 적용한다.
- 캡차(captcha)를 활성화한다.
- 가능한 경우 다중 요소 인증을 활성화한다.
- 가급적 비밀번호 관리자를 사용한다.
[윈도우 운영체제에 대한 무차별 대입 공격 방어]
1. 로그인 시도에 대한 임계값을 설정하여 로그인시도가 임계값에 도달하면 자동으로 사용자(관리자) 계정을 잠그는 방법
> 단, 윈도우서버 운영체제에서는 기본으로 30분 동안 계정 로그인이 잠기고, 30분 후에 자동으로 잠금해제가 되는 것이 기본설정이다.
> 로컬 보안 정책(secpol.msc) -> 계정 정책 -> 계정 잠금 정책에서 설정 가능하다.
2. 윈도우 운영체제 기본 방화벽 기능 사용하는 방법
> 윈도우 운영체제에서 기본으로 제공하는 방화벽 기능을 사용하여 인터넷을 통해 내가 사용하는 윈도우 운영체제로 Inbound될 수 있는 불법 프로그램이나 바이러스, 멀웨어 등을 감지하거나 차단할 수 있다.
> 윈도우PC 또는 윈도우서버 운영체제에서 firewall.cpl 명령어 또는 '제어판 -> 시스템및보안 -> Windows 방화벽'으로 '기본 내장된 방화벽'설정 페이지를 호출하여 확인할 수 있다.
> 마지막으로 방화벽만 믿고 있으면 안된다. 왜냐하면 이메일의 내용은 사전 파악할 수 없기 때문에, 메일에 첨부된 형식의 바이러스는 방어가 불가능하다. 그래서 바이러스 백신 프로그램이 필요하다.
3. 서버백신을 사용하여 무차별대입공격 계속될 경우 관리자에게 경고알람이 전달될 수 있도록 하여, 경고 수신 시 신속히 조치하는 방법
> 단, 서버 자체적으로 경고할람을 화면에만 표시하는 경우 관리자가 인지 못할 수도 있어 메일 또는 SMS 등의 추가적인 방법으로 수신토록 하는 설정이 필수이다.
4. 서버백신을 사용하여 관리자 비밀번호 뿐 아니라 2단계 비밀번호를 적용, 공격에 대응하는 방법
> 단, 2단계 비밀번호 또한 무력화 될 수 있기 때문에 스마트폰 연동 OTP와 같은 기술이 필수.
> 접속할 때마다 일회용 비밀번호를 이용하고, 30초 단위로 비밀번호가 계속 바뀌기 때문에 공격에 대응할 수 있다.
> 예를 들어 원격으로 윈도우서버에 접속하려면 서버백신에서 제공되는 비밀번호를 사용해야 하고, 해당 비밀번호는 사전 인증된 스마트폰에서 30초 단위로 바뀌는 비밀번호로 확인할 수 있다.
[리눅스 운영체제에 대한 무차별 대입 공격 방어]
참조) 리눅스 ssh에 대한 "무차별 대입공격(Brute Force Attack)"방법들
* https://www.rootinstall.com/tutorial/bruteforce-ssh-in-linux/
* https://linuxhint.com/passowrd_brute_force_nmap/
* https://nmap.org/nsedoc/scripts/ssh-brute.html
CentOS7에서 nmap을 사용하여 ssh에 대한 "무차별 대입공격(Brute Force Attack)"을 진행함. |
참조) nmap 은 포트스캐닝(Port Scanning)을 해서 컴퓨터의 보안취약점을 확인할 수 있도록 도와주는 툴이다. 윈도우용, 리눅스용 별도로 모두 있다. |
1. nmap6.4.0 버전을 사용하여 ssh에 대한 "무차별 대입공격(Brute Force Attack)"을 아래와 같이 실행한 결과 "무차별 대입공격(Brute Force Attack)"이 성공적으로 진행되지 않았음.
# cd /usr/share/nmap/scripts
# wget https://svn.nmap.org/nmap/scripts/ssh-brute.nse
# cd /usr/local/share/
# mkdir lua
# cd lua
# mkdir 5.2
# cd 5.2
# wget https://svn.nmap.org/nmap/nselib/libssh2-utility.lua
# nmap -p 22 --script ssh-brute --script-args userdb=users.lst,passdb=pass.lst 192.168.0.1
Starting Nmap 6.40 ( http://nmap.org ) at 2022-06-04 22:19 KST
Nmap scan report for 192.168.0.11
Host is up (0.00069s latency).
PORT STATE SERVICE
22/tcp open ssh
MAC Address: xx:xx:xx:xx:xx:xx (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.48 seconds
|
cs |
2. 그래서, nmap의 버전을 높여서 사용해보기 위해서 7.92 소스 코드를 다운로드한 후, 빌드해서 실행해본 결과 ssh에 대한 "무차별 대입공격(Brute Force Attack)이 성공적으로 실행되었다.
# ./nmap -n -p 22 --script ssh-brute --script-args userdb=/root/user.txt,passdb=/root/pass.txt,brute.firstonly 192.168.0.1
Starting Nmap 7.92 ( https://nmap.org ) at 2022-06-04 22:48 KST
NSE: [ssh-brute] Trying username/password pair: root:root
NSE: [ssh-brute] Trying username/password pair: root:
Nmap scan report for 192.168.0.16
Host is up (0.00068s latency).
PORT STATE SERVICE
22/tcp open ssh
| ssh-brute:
| Accounts: No valid accounts found
|_ Statistics: Performed 21 guesses in 5 seconds, average tps: 4.2
MAC Address: 00:0C:29:BE:84:CA (VMware)
Nmap done: 1 IP address (1 host up) scanned in 5.42 seconds
|
cs |
- 원활한 ssh에 대한 "무차별 대입공격(Brute Force Attack)을 진행하기 위해서 다양한 비밀번호를 저장한 pass.lst 파일(userdb 와 passed포함)을 구해서 진행해야 한다. - 다양한 비밀번호를 저장한 password.txt 파일을 검색해보면 아래와 같은 사이트들을 검색해낼 수 있고, 필요한 패스워드 저장 파일을 얻어낼 수 있다. * https://github.com/jeanphorn/wordlist * https://github.com/danielmiessler/SecLists |
3. fail2ban 설치를 통한 방어
다양한 비밀번호가 존재하여도 fail2ban 이 설치된 호스트에 ssh 무차별 공격을 실행하면 fail2ban 에서 ssh 무차별 공격을 실행하는 호스트의 TCP 연결을 제한하여 ssh 무차별 공격에 대한 방어를 할수도 있다.
- 리눅스 ssh 무작위 공격을 방어를 위해 fail2ban 을 설치해서 사용할 수 있다.
- fail2ban 프로그램에 대한 정보는 아래의 웹 페이지에서 확인할 수 있다.
> https://www.fail2ban.org/wiki/index.php/Main_Page
fail2ban 프로그램에 대한 설명을 한국어로 번역하면 다음과 같다. Fail2ban 은 로그 파일 ( 예: /var/log/apache/error_log ) 을 검사하고 악의적인 징후 ( 너무 많은 비밀번호 실패, 악용 검색 등 ) 를 보이는 IP 를 차단시킵니다. 일반적으로 Fail2Ban 은 IP 주소를 지정된 시간 동안 거부하도록 방화벽 규칙을 업데이트하는 데 사용됩니다. Fail2Ban 을 설정하면 임의의 다른 작업 (예: 이메일 보내기) 도 구성할 수 있습니다. 기본적으로 Fail2Ban 에는다양한 서비스 (아파치, 택배, ssh 등) 용 필터 가 함께 제공됩니다. Fail2Ban은 잘못된 인증 시도 비율을 줄일 수 있지만 약한 인증으로 인한 위험을 제거할 수는 없습니다. 서비스를 정말로 보호하려면 두 가지 요소 또는 공개/개인 인증 메커니즘만 사용하도록 서비스를 구성하십시오. |
- 다음 : 무차별대입공격과 OWASP TOP10소개 -
'정보보안.Security' 카테고리의 다른 글
[리눅스][초보][보안][무차별대입공격과 OWASP TOP10 취약점 대응내용] (2) | 2023.01.05 |
---|---|
[리눅스][초보][보안][무차별대입공격과 OWASP TOP10 소개] (0) | 2023.01.04 |
[리눅스][초보][보안][무차별대입공격유형] (1) | 2022.12.31 |
[리눅스][초보][보안][무차별대입공격 원리] (1) | 2022.12.30 |
[리눅스][초보][보안][무차별대입공격이란] (4) | 2022.12.29 |