홈페이지 취약점 분석 이야기 파일 지도 사진 깨알






웹 해킹 훈련장 172.16.15.116 40080/tcp 대상 공개용 도구 기반의 홈페이지 취약점 점검 실습 (20200507)

Kali Linux 2020.1b 64bit 설치 설명서 (MS 윈도우 10, VMware 플레이어) (20200325)

VirtualBox 가상머신으로 GSM CE 6.0.2 설치 설명서 (OpenVAS) (20200125)

Kali Linux 2019.4 64bit Light 배포판 설치 설명서 (권장) (20191202)

Kali Linux 2019.3 64bit Large 배포판 설치 및 한글 설정 설명서 (20191129)

[과제] WH-MissAuth-1 웹해킹훈련장: 접속자 권한인증 후 출력 제어 취약점 (20180619)

[과제] WH-WebEditor-SE2 웹해킹훈련장: 취약한 PHP 버전에서 원래 파일이름을 저장하는 웹에디터의 취약점을 이용한 시스템 침투 (20170827)

[과제] WH-FILEDOWN-01 웹해킹훈련장: 파일다운로드로 서버침투 (20170810)

[과제] WH-COOKIE-02 웹해킹훈련장: 쿠키 오용 취약점 (20170809)

Apache Tomcat /manager/html 무작위대입공격 도구 작성 - PHP (20170721)

칼리 리눅스를 이용한 From SQL Injection to Shell 공략 (20170404)

단순한 방어법(../ 제거)의 파일 다운로드 취약점 진단 사례 (20170329)

WH-WebEditor-CH 라이브 ISO: 이미지 검증 기능을 우회하여 PHP 웹쉘 생성 (20170130)

오늘의 웹서버 공격 로그: MySQL 관리 인터페이스 자동탐색 도구 - Jorgee Scanner (20170125)

WH-WebEditor-GM 라이브 ISO: 이미지 검증 기능을 우회하여 PHP 웹쉘 생성 (20170123)

오늘의 웹서버 공격 로그: Apache ProxyAbuse 탐지 시도 (20170122)

오늘의 웹서버 공격 로그: Bash 쉘쇼크 취약점을 이용한 Perl Ircbot 삽입 시도 (20170122)

오늘의 웹서버 공격 로그: phpMyAdmin 취약점 자동탐색 도구 - ZmEu Scanner (20170121)

오늘의 웹서버 공격 로그: 워드프레스 취약점 자동탐색 도구 (20170118)

WH-PathTrav-01 라이브 ISO: 파일 다운로드 취약점으로 서버 침투 (20170116)

WH-Webshell-Loc-01 라이브 ISO: 서버 내 웹쉘 저장경로 알아내기 (20170114)

WH-ImgShell-01 라이브 ISO: 이미지에 덧붙인 웹쉘 취약점 웹해킹훈련장 (20170113)

SSH 무작위 대입 공격으로 root권한을 탈취한 침해사고 사례 (20170112)

WH-IllInst-WordPress 워드프레스 웹해킹훈련장 소개 (20170110)

WH-IllInst-WordPress 워드프레스 웹해킹훈련장 실습 설명서 (20170110)

MSSQL과 MySQL의 SQL구문삽입을 이용한 OS 명령어 실행 (20170109)

WH-CommInj-01 원격 운영체제 명령어 삽입 취약점 훈련장(라이브 ISO) 소개 및 실습 설명서 (20170106)

WH-Deface-01 기능별 권한인증 취약점 훈련장(라이브 ISO) 소개 (20170104)

WH-Deface-01 웹해킹훈련장 실습 설명서 (20170104)

WH-Account-01 회원가입 취약점 훈련장(라이브 ISO) 소개 (20170102)

WH-Account-01 웹해킹훈련장 실습 설명서 (20170103)

WH-Account-02 회원정보수정 취약점 훈련장(라이브 ISO) 소개 (20170103)

WH-Account-02 웹해킹훈련장 실습 설명서 (20170104)

저장형 XSS 공격을 이용한 홈페이지위변조 공격 사례 (20161231)

로그인한 상태에서 웹취약점스캐너의 자동점검 위험성 (20161228)

DBMS Fingerprinting (데이터베이스 관리시스템 탐지) (20161222)

FCKeditor를 대상으로 한 자동화 공격툴의 침해사례 (20161220)

이중 서버스크립트 혼용을 이용한 웹방화벽/확장자검증 우회 (실제 사례) (20161219)

HTTP/HTTPS 혼용에 따른 관리자로그인 페이지 접근 우회 (실제 사례) (20161214)

경로재지정 취약점: 자바스크립트를 이용한 검증과 그 우회, 그리고 XSS (실제 사례) (20161214)

웹해킹 사례: 유명 홈페이지를 악성코드 배포 경유지로... (20161213)

HTML 삽입, XSS 공격 탐지방법 (20161211)

오늘의 웹서버 공격 로그, Axis2, 공개프록시 (20161210)

오늘의 웹서버 공격 로그, XML-RPC, Open Proxy (20161208)

nikto와 owasp-zap 연동 (20161206)

미라이 IoT DDoS 봇넷이 사용한 61개 비밀번호 (20161205)

오늘의 웹서버 공격 로그, SOAP 원격코드실행, D-Link 명령어 삽입, muieblackcat (20161205)

오늘의 웹서버 공격 로그, w00tw00t (DFind) (20161204)

기억하기 쉽고 안전한 비밀번호 만들기 (20161203)

2016.12.01-02 웹서버 공격 로그, armgg DDoS 악성코드 (20161202)

KISA의 랜섬웨어 예방 수칙 (20161202)

WH-DVWA-1.9 Damn Vulnerable Web App 웹해킹훈련장 (20161201)

DVWA Brute Force 실습 설명서 (20161205)

DVWA Command Injection 실습 설명서 (20161207)

DVWA CSRF (low, high level) 실습 설명서 (20161208)

DVWA File Inclusion 실습 설명서 (20161215)

DVWA File Upload 실습 설명서 (20161221)

DVWA SQL Injection (low, medium, high level) 실습 설명서 (20161224)

DVWA SQL Injection medium level - OWASP-ZAP과 sqlmap 실습 설명서 (20161222)

DVWA Blind SQLi (high level) 수동점검을 통한 '눈먼'SQL 구문삽입의 이해 (20161227)

DVWA Blind SQL Injection (low, medium level) sqlmap 실습 설명서 (20161226)

DVWA Reflected Cross Site Scripting (XSS) 실습 설명서 (20161227)

DVWA Stored Cross Site Scripting (XSS) 실습 설명서 (20170101)

SVG 이미지의 ECMAscript를 이용한 악성코드 배포 (20161201)

WH-WebGoat-7.0.1 웹해킹훈련장 라이브 ISO (20161130)

WebGoat: Bypass a Path Based Access Control Scheme (20161207)

WebGoat, LAB: DOM-Based cross-site scripting (20161208)

WebGoat, Authentication Flaws: Multi Level Login 2 (20161209)

WebGoat, Code Quality: Discover Clues in the HTML (20161210)

WebGoat XSS: Phishing with XSS (20161211)

WebGoat: OS Command Injection (20161215)

WebGoat: Numeric SQL Injection (20161216)

WebGoat: String SQL Injection (UNION기반 SQL 구문삽입의 이해) (20161217)

WebGoat: Blind Numeric SQL Injection (추리기반 SQL 구문삽입의 이해) (20161218)

2016.11.30 웹서버 공격 로그 (20161130)

OWASP TOP 10 (2013) 문서의 각종 해킹 시나리오 모음 (20161129)

WH-LFI-01: 널바이트삽입과 내부파일실행 웹해킹훈련장 (20161126)

WH-LFI-01 웹해킹훈련장의 취약점 분석 결과보고서 (20161128)

인터넷(Internet)과 보안에 대해 짧게 생각해보다 (20161125)

PHP Easter Egg의 이해와 조치방안 (20161125)

WH-COOKIE-01: 잘못된 쿠키 사용 사례를 보여주는 웹해킹훈련장 (20161124)

WH-COOKIE-01 웹해킹훈련장 홈페이지 취약점분석 결과보고서 (20161126)

웹해킹 공격/방어 일람 (20161121)

webhack.dynu.net 문자배너 만들기 - toilet (20161121)

MIME 형식의 보안위협 완화: X-Content-Type-Options 헤더 (20161120)

X-XSS-Protection헤더 시험 페이지 (20161119)

방화벽을 노리는 블랙너스(Black Nurse) DoS 공격 (20161118)

클릭재킹 방지를 위한 X-Frame-Options 헤더 (20161117)

X-Frame-Options헤더 시험 페이지 (20161118)

공시생 성적조작 사건, 물리보안과 정보보안 (20161117)

ID/PW 평문전송, 정말 그렇게 큰 취약점인가? (20161116)

[웹해킹훈련장] 취약한 비밀번호: WH-weak-root-pw 실습 설명서 (20161116)

weak-root-pw 훈련장 웹취약점 분석 보고서 (20161117)

슬리타즈 리눅스 4.0 설치와 웹해킹훈련장 Live ISO 만들기 (20161115)

버추얼박스 가상머신에서 Tails OS 설치 (20161114)

Kali Linux에 Tor Browser 설치하기 (20161114)

인터넷익명성 - VPN과 Tor (20161114)

Kali Linux, open-vm-tools, Shared Folder (20161113)

SSL Strip 공격과 HSTS (20161112)

모든 꼬리표 모아보기(태그 클라우드) (20161111)

HTTP 세션 탈취와 IP보안 (20161111)

HTTP TRACE method와 XST 공격 (20161111)

세션쿠키와 HttpOnly (20161110)

HTTP 메소드 수동점검 방법 (20161110)

파일업로드(웹쉘) 방어하기 (20161109)

파일다운로드/경로조작 방어하기 (20161109)

XSS, SQL Injection 방어하기 (20161109)

길찾기(sitemap) (20161109)

웹취약성분석 관련 파일 목록 (20161108)

SQL 인젝션 공격도구 sqlmap의 간단한 사용법 (20161107)

웹취약점 분석 도구로서의 THC Hydra (20161107)

웹취약점 분석 도구로서의 cURL (20161107)

[웹해킹훈련장] CVE-2014-6271: Bash Shellshock 실습 설명서 (20161104)

[PentesterLab] CVE-2014-6271 Shellshock 훈련장 웹취약점 분석 보고서 (20161106)

무료 웹해킹 교육장 목록 (20161103)

칼리 리눅스(Kali Linux) 설치 (20161030)

가상머신 버추얼 박스(VirtualBox) 설치 (20161029)

가상머신 VMWare Workstation Player 설치 (20161028)

[웹해킹훈련장] Drunk Admin Web Hacking Challenge 실습 설명서 (20161027)

스마트에디터(SmartEditor) 2.0 Basic의 웹쉘 업로드 취약점 (20160719)

<< 목록숨기기
#비밀번호 복잡도 #안전한 비밀번호 #기억하기 쉬운 비번 #취약한 비밀번호 #John the Ripper #무작위대입공격 #양자컴퓨터 #Quantum Computer

재미로 보는 비밀번호 복잡도

안전한 비밀번호는 대문자, 소문자, 숫자, 특수기호를 모두 넣어서 14자리 이상이면 좋다.
외우기 쉬운 비밀번호는 자신만이 아는 사실을 포함하는 세가지 정도의 단서를 사용하면 된다.
  - Dudgml!50522spdlqj ("내사랑 영희15년 5월 22일에 만났지. 여기는 네이버 누리집.")
  - Ekdma!50522dudgml ("여기는 다음 홈페이지. 15년 5월 22일에 만난 내사랑 영희.")
첫번째 문자는 대문자로 한다. 첫번째 숫자는 Shift를 눌러서 특수문자로 입력되게 한다. 그리고 비번 변경이 필요하면 위의 세 가지 단서의 위치를 바꾸면 된다.

"내 비밀번호는 얼마나 안전할까? (How secure is my passowrd?)"라는 비밀번호 안전성 검사 누리집이 있다. 비밀번호를 어떻게 만든 것이 좋은 지를 시험해볼 수 있다. (그렇다고 내 비밀번호를 직접 입력하지는 말 것!!!)

비밀번호 안전도 검사 누리집
[ https://howsecureismypassword.net/ 접속 화면 ]

이 누리집의 인터페이스는 간단하다. 자신이 생각하는 문자열을 입력하면 얼마나 빨리 암호를 풀 수 있는 지를 보여준다. 우리가 생각하는 것보다 엄청나게 빨리 비밀번호가 풀릴 수 있다고 한다. "수퍼컴을 쓰나?" 마음 편하게 해커가 세상에서 가장 빠른 컴퓨터를 가지고 있다고 생각하고 결과를 보자 ^^

비밀번호 안전도 검사 누리집 시험
[ https://howsecureismypassword.net/ 비밀번호 시험: "Aa1!Aa1!Aa1!Aa" ]

위의 그림은 https://howsecureismypassword.net/에 Aa1!Aa1!Aa1!Aa를 입력했을 때의 비번을 풀 수 있는 시간이다. 2억400만년이다. 현실적으로는 풀기 불가능하다는 뜻이다. 여러가지 입력하다 보니 두 가지 규칙이 있는 것을 알 수 있다.

문자 1종(영어 소문자)으로 만들 경우

 43210987654321
       aaaaaaaa  0.00년
      aaaaaaaaa  0.00년
     aaaaaaaaaa  0.00년
    aaaaaaaaaaa  0.00년
   aaaaaaaaaaaa  0.08년
  aaaaaaaaaaaaa  2.00년
 aaaaaaaaaaaaaa  51.00년

비번 문자열이 길수록 시간이 많이 걸린다.

문자 2종(영어 소문자, 숫자)으로 만들 경우

 43210987654321
       a1a1a1a1  0.00년
      a1a1a1a1a  0.00년
     a1a1a1a1a1  0.00년
    a1a1a1a1a1a  0.08년
   a1a1a1a1a1a1  4.00년
  a1a1a1a1a1a1a  100.00년
 a1a1a1a1a1a1a1  5000.00년

비번 문자열이 길수록 시간이 많이 걸린다. 같은 길이라도 문자 1종을 사용하는 것에 비해서 연산시간이 100배 정도 늘어났다.

문자 3종(영어 소문자, 대문자, 숫자)으로 만들 경우

 43210987654321
       aA1aA1aA  0.00년
      aA1aA1aA1  0.01년
     aA1aA1aA1a  0.67년
    aA1aA1aA1aA  41.00년
   aA1aA1aA1aA1  3000.00년
  aA1aA1aA1aA1a  15,8000.00년
 aA1aA1aA1aA1aA  1000,0000.00년

비번 문자열이 길수록 시간이 많이 걸린다. 같은 길이라도 문자 2종을 사용하는 것에 비해서 연산시간이 2000배 정도 늘어났다.

문자 4종(영어 소문자, 대문자, 숫자, 특수문자)으로 만들 경우

 43210987654321
       aB1@aB1@  0.00년
      aB1@aB1@a  0.08년
     aB1@aB1@aB  6.00년
    aB1@aB1@aB1  4000.00년
   aB1@aB1@aB1@  3,4000.00년
  aB1@aB1@aB1@a  300,0000.00년
 aB1@aB1@aB1@aB  2,0400,0000.00년

비번 문자열이 길수록 시간이 많이 걸린다. 같은 길이라도 문자 3종을 사용하는 것에 비해서 연산시간이 20배 정도 늘어났다.

(영어 소문자, 대문자, 숫자, 특수문자) 조합의 수에 따른 비교

 문자 1종 예: abcdefghijklmn           51년
 문자 2종 예: a1b2c3d4e5f6g7         5000년
 문자 3종 예: aA1bB2cC3dD4eE    1000,0000년
 문자 4종 예: aB1@bC2@dE3#eF  2,0400,0000년

14자리 비밀번호를 소문자/대문자/숫자/특수문자 중 사용하는 종수에 따라 시간을 비교해 보았다. 종의 수가 늘어날수록 비밀번호 해독연산에 필요한 시간도 늘어나는 것을 볼 수 있다.

결론

안전하게 비밀번호를 만들려면 가능한 길게 만들 것. 그리고 대문자/소문자/숫자/특수문자를 모두 포함할 것.

앞으로 벌어질 일에 대한 예측

현재 이 문서를 작성하고 있는 노트북의 경우에는 John the Ripper를 돌렸을 때 각 CPU thread가 초당 300개 이상의 비번을 계산한다. 쓰레드 수가 8개이니 초당 2400개 정도를 연산할 수 있다는 뜻이다. 이 노트북의 CPU는 "Intel(R) Core(TM) i7-3635QM CPU @ 2.40GHz"이다. 2016년 현재 데스크탑용 스카이레이크 i7-6700K CPU의 각 쓰레드는 초당 900개 정도의 비밀번호를 계산할 수 있다. 모든 코어를 사용하면 초당 7200개 정도의 비번을 연산할 수 있다. i7-6700K CPU로 하룻동안 7200*3600*24 = 6,2208,0000 (6억2천만) 번의 비밀번호 연산을 할 수 있다는 뜻이다.

숫자로만 구성된 비밀번호의 예를 들어보자. 8자리 숫자라면 경우의 수는 10^8 즉 1,0000,0000의 경우의 수를 가지므로 i7-6700K CPU로는 대략 네시간 정도면 풀어낼 수 있다 (수학적 평균으로는 2시간 정도이다). 9자리의 숫자라면 최대 10,0000,0000/6,2208,0000=1.6일, 평균적으로는 0.8일(19시간18분)이면 풀어낼 수 있다.

숫자는 문자의 수가 총 10개이므로 단순하다. 여기에 영어 소문자 26개, 대문자 26개, 특수문자 33개가 포함되면 - 사용할 수 있는 문자의 종류는 총 95개 - 문자열의 길이가 늘어날 수록 경우의 수는 기하급수적으로 늘어나게 된다. 예를 들어 문자열이 8자리이면 경우의 수는 95^8(6634,2043,1289,0625 = 6634경)이 되므로 - i7-6700K CPU로 연산하는 데 최대 2만9천년이 걸림 - 현실적으로 비밀번호 연산이 불가능해진다.

그런데 양자컴퓨터(Quantum Computer)가 개발되고 있다. 2011년 5월 11일, 캐나다의 D-Wave Systems에서 128큐비트 프로세스가 장착된 세계최초의 상용화 양자컴퓨터인 D-Wave One을 내놓았으며, 미국 록히드마틴에서 100억 원에 구입했다고 한다. NASA와 구글은 차기작을 구매하였다. 2015년 말, 구글과 나사에서 특정 알고리즘에서 일반컴퓨터 보다 약 1억 배 더 빠르다고 주장하는 양자컴퓨터의 실물을 공개했다. 1억배 더 빠르다고 한다.

양자컴퓨터가 일반화되기까지는 아직 시간이 많이 걸리겠지만 가시권 내에 있는 것은 확실하다. 현재도 1억배 이상의 성능을 낼 수 있다고 한다. i7-6700K가 약 3만년이 걸리던 일을 양자컴퓨터는 2.6시간이면 연산해낼 수 있게 될 것이다. 비밀번호 8자리는 너무나 취약한 것이 된다는 뜻이다.

재미있는 사실은 HowSecureIsMyPassword 누리집에서 대문자/소문자/숫자/특수문자를 모두 사용한 8자리 비밀번호는 모두 9시간이면 풀 수 있다고 나온다. 양자컴퓨터의 세시간과 비숫한 수준이다. 이 홈페이지 개발자가 양자컴퓨터를 염두에 두고 알고리즘을 설계하고 시간을 계산한 것일까?

[처음 작성한 날: 2016.12.03]    [마지막으로 고친 날: 2016.12.03] 


> 이 글을 목록없이 인쇄하기 편하게 보기

< 이전 글 : 오늘의 웹서버 공격 로그, w00tw00t (DFind) (2016.12.04)

> 다음 글 : 2016.12.01-02 웹서버 공격 로그, armgg DDoS 악성코드 (2016.12.02)


크리에이티브 커먼즈 라이선스 이 저작물은 크리에이티브 커먼즈 저작자표시 4.0 국제 라이선스에 따라 이용할 수 있습니다.
잘못된 내용, 오탈자 및 기타 문의사항은 j1n5uk{at}daum.net으로 연락주시기 바랍니다.
문서의 시작으로 컴퓨터 깨알지식 웹핵 누리집 대문

.. -- -- | - .. .... | ... / .. .../ ... {] . .. .. .. ..| ...... .../ .../ .. ...... ... ... ] .. [ .../ ..../ ......./ .. ./// ../ ... .. ... .. -- -- | - .. .... | ... / .. .../ ... {] . .. .. .. ..| ...... .../ .../ .. ./// ../ ... .. ... ...| ..../ ./ ... / ..| ....| ........ / ... / .... ...... ... ... ] .. [ .../ ..../ ......./ .....| ..../ ./ ... / ..| ....| ........ / ... / .... ...| ..../ ./ ... / ..| ....| ........ / ... / .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .