오늘 끝나면
취약점 스캐닝
- ✓취약점 스캐닝의 핵심 문제를 한 문장으로 설명한다
- ✓오른쪽 실습에서 취약점이 어떻게 움직이는지 관찰한다
- ✓다음 강의와 이어지는 한계를 말할 수 있다
실습 미션
알려진 구멍(CVE)을 자동으로 훑기 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.
성공 조건
- □실습의 기본값을 먼저 관찰
- □입력값이나 모드를 한 번 이상 바꿔 결과 비교
- □왜 결과가 바뀌었는지 한 문장으로 설명
화이트해킹 · 04
취약점
스캐닝
새 구멍을 발명하는 게 아니다. 이미 공개된 구멍을 자동으로 훑는 일이다.
대상의 버전을 알아내고, 취약점 DB에 대조한 다음, 위험도를 매긴다.
패치 안 한 구버전이 1순위 표적이다. 그래서 방어는 단순하다. 패치하면 된다.
스캐닝은 알려진 구멍을 훑는 일
취약점 스캐닝이라 하면 천재 해커가 새 구멍을 뚫는 그림을 떠올린다. 현실은 반대다.
스캐너가 찾는 건 이미 알려진 취약점이다.
누군가 발견해 공개하고, 번호(CVE)가 붙고, DB에 등록된 구멍이다.
그 목록을 들고 대상 시스템을 빠르게 훑어보는 자동 도구다.
그래서 핵심은 속도다. 사람이 일일이 점검하면 며칠이 걸린다.
스캐너는 수천 개 항목을 몇 분 만에 대조한다.
공격자만 쓰는 도구가 아니다. 방어팀이 자기 시스템을 먼저 훑어 구멍을 메우는 데 더 많이 쓴다.
이미 공개된 구멍
CVE 등록돼 스캐너가 잡는다
패치로 메운 구멍
최신 버전엔 없다
아무도 모르는 구멍
제로데이라 DB에 없어 못 잡는다
스캐너는 공개된 목록 대조기다. 모르는 건 못 찾는다
CVE, 구멍마다 붙는 주민번호
취약점을 말로 부르면 헷갈린다. 그래서 전 세계가 같은 번호로 부르기로 했다.
그게 CVE, Common Vulnerabilities and Exposures다.
공개된 취약점 하나에 CVE-연도-일련번호 형태의 고유 번호가 붙는다.
해당 제품과 버전, 증상이 함께 DB에 기록된다.
번호가 붙었다는 건 이미 세상에 공개됐다는 뜻이다.
공격자도 보고 방어자도 본다. 같은 목록을 양쪽이 들고 있는 셈이다.
먼저 메우는 쪽이 이긴다. 공개됐는데 안 막은 시스템이 표적이 된다.
접두어
CVE
공개 연도
2099
일련번호
1042
구멍 하나에 전 세계 공통 번호 하나가 붙는다 (위 번호는 가상 예시)
버전을 알아내 DB에 대조한다
스캐너의 핵심 동작은 두 단계다. 버전을 알아낸 다음 DB에 대조한다.
소프트웨어는 자기 버전을 곳곳에 흘린다.
응답 헤더의 배너, 에러 페이지, 기본 파일 이름이 그렇다.
이걸 모아 제품 + 버전을 특정한다. 3강에서 본 정찰의 연장이다.
소프트웨어와 버전을 고르면 그 버전에 걸리는 CVE와 위험도가 뜬다.
패치된 최신 버전을 고르면 매칭이 사라진다. 이게 핵심이다.
배너·헤더에서 캐낸 OpenWeb 서버 v1.2 을 DB와 대조한다.
인증 우회, 원격에서 관리자 권한
→ v1.4 에서 패치됨
경로 조작으로 파일 노출
→ v1.6 에서 패치됨
에러 페이지에 내부 경로 노출
→ v2.0 에서 패치됨
전부 교육용 가상 DB다. 버전을 올려보면 매칭이 줄어든다. 스캐너가 찾는 건 이미 공개된 구멍뿐이라 패치하면 사라진다.
CVSS, 위험도를 0~10으로
구멍 100개가 나와도 다 똑같이 급하지는 않다. 우선순위가 필요하다.
그래서 CVSS로 점수를 매긴다. 0.0부터 10.0까지다.
원격에서 되는지, 권한이 필요한지, 뚫리면 피해가 얼마나 큰지를 따져 한 숫자로 압축한다.
9.0 이상은 치명, 7.0대는 높음, 그 아래는 보통과 낮음으로 나뉜다.
방어팀은 이 점수로 일의 순서를 정한다.
치명적이고 인터넷에 노출됐고 패치가 나온 것부터 막는다.
숫자가 높다고 무조건 먼저는 아니다. 노출 여부까지 묶어서 봐야 진짜 위험이 보인다.
높을수록 급하다. 노출 여부까지 묶어 우선순위를 정한다
패치가 최선의 방어
스캐닝이 찾는 건 이미 공개된 구멍이다. 공개됐다는 건 보통 패치도 나와 있다는 뜻이다.
그래서 방어가 허무할 만큼 단순하다. 버전을 올리면 된다.
패치된 버전에는 그 CVE가 없다. 스캐너가 짚을 게 사라진다.
공격자가 노리는 건 늘 패치 안 한 구버전이다.
현실에서 침해의 큰 몫이 이미 패치 나온 오래된 구멍에서 터진다.
그래서 자산 목록을 만들고, 정기적으로 스스로 스캔하고, 버전을 최신으로 유지하는 게 기본 방어다.
당장 못 올릴 땐 노출을 줄인다. 내부망으로 숨기거나 접근을 막아 표적이 되는 면을 좁힌다.
Q. 취약점 스캐닝이 찾아내는 것은? (아무도 모르는 새 구멍 · 이미 공개된 알려진 구멍 · 사용자 비밀번호 · 네트워크 속도)
정답은 이미 공개된 알려진 구멍이다.스캐너는 CVE로 등록되고 공개된 취약점 목록을 들고 버전을 대조한다.
공개됐다는 건 보통 패치도 나와 있다는 뜻이고, 그래서 패치로 막힌다.
아무도 모르는 새 구멍(제로데이)은 DB에 없어서 스캐너로는 못 잡는다.
방어는 버전 올리기다. 패치된 버전엔 그 구멍이 없다