인터넷
- 멀리 떨어진 대학 연구소에 정보 전달 용도로 시작
- TCP/IP 프로토콜 기반
프로토콜
- 통신 규칙과 방법에 대한 약속 또는 규약
- 3가지 요소 - 구문(Syntax), 의미(Semantics), 순서(Timing)
- TCP/IP(Transmission Control Protocol/Internet Protocol)
- TCP/IP는 RFC라는 문서를 통해 공개(https://www.ietf.org/rfc)
TCP/IP
- 가장 많이 사용됨
- RFC에 명세
RFC
- 프로토콜들이 명세되어 있음
- 국제인터넷표준화기구(IEFT)에서 만듦
HTTP
- Request: ex) GET / HTTP / 1.1
- Response: 프로토콜 버전, HTTP 상태 코드(200 OK), 데이터 형식과 길이
- v0.9 : 서버에서 단순히 읽기 기능
- v1.0 : GET, HEAD, POST / 각 요청마다 연결하고 끊음을 반복
- v1.1 : OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT / 요청이 계속 들어오면 연결을 끊지않고 보내줌
- GET: 읽거나 검색할 때에 사용, 필요한 데이터를 url에 포함, 보안상 위험
- POST: 무언가를 생성할 때 사용, 데이터를 body에 포함, 보안상 안전
DNS
- 도메인 네임 서버
- 클라이언트가 DNS에 url을 보내면 대응되는 IP를 보내줌
인터넷 거버넌스
- 국제인터넷주소관리기구(ICANN): DNS와 IP주소, 프로토콜 번호 관리
- 인터넷할당번호관리기관(IANA): 사용자에게 인터넷 주소할당, DNS Root Zone 관리
- 인터넷소사이어티(ISOC): 인터넷 기술의 국제적인 협력을 촉진시키는 비영리 기구
- IETF: 인터넷 운영 관리 개발을 협의하고 프로토콜과 구조를 분석하는 인터넷 표준화 기구
- IESG: 인터넷의 기술적인 문제를 해결
- IAB: 인터넷의 방침이나 장기적인 기획 및 기술 정책 등을 심의
- 월드와이드웹컨소시엄(W3C): 웹 브라우저, 웹 서버 표준화 기구
- 국제전기통신연합(ITU): 인터넷에 영향을 미치는 관세 문제
웹 해킹 기초
웹 해킹 발전 배경
- 1990년대 중반 방화벽 및 IDS 같은 보안 장비
- 닷컴 열풍이 불고 웹 취약점 연구도 진행
- 2000년 중반 거의 모든 시스템이 방화벽으로 80번 포트(HTTP)만 열림
- 이에 따라 시트템과 네트워크 해킹보다 웹 해킹을 더 많이 연구
해킹 과정
공격대상선정
: 주로 방문자가 많은 / 도메인을 모두 검색 후 최약한 곳정보수집
: 개발 언어, 기능, 서버 종류 확인 / 최약점이 가장 많고 영향력이 큰곳(게시판, 자료실) / 개발자 도구로 사이트 구조 파악취약점분석
공격
Report, Defacement, 흔적제거
정보수집 및 취약점 분석 툴
- Burp Suite: 웹 사이트 구조 분석, 패킷 분석
- Wikto: 웹 스캐닝 도구. 웹 서버의 종류와 버전 디렉토리 정보 등 취약점도 분석
- WebGoat: 취약점 테스트 및 학습할 수 있음
검색엔진을 이용한 정보 수집
- sie: 특정 도메인 지정
- filetype: 특정 파일 타입
- link: 링크에 특정 문자가 포함
- cache: 특정 검색어에 해당하는 캐시된 페이지
- intitle: 페이지 제목에 특정 문자가 포함
- inurl: 페이지 url에 특정 문자가 포함
OWASP Top 10
- 웹 취약점을 공유하는 사이트
- 취약점을 공격 가능성, 보안 취약점, 기술적 영향으로 평가
- 대부분 사용자의 입력값을 검증하지 않아서 발생
- in 2021
- A1.잘못된 접근 통제
- A2.암호화 오류
- A3.인젝션
- A4.안전하지 않은 설계
- A5.보안 설정 오류
- A6.취약하거나 오래된 컴포넌트
- A7.식별 및 인증 실패
- A8.소프트웨어와 데이터 무결성 실패
- A9.보안 로그 및 모니터링 실패
- A10.서버 사이드 요청 변조
인증 기술과 접근 통제
인증기술
- 알고 있는것 - 패스워드, 주민등록번호, i-PIN
- 가지고 있는것 - 신분증, 여권, 신용카드, 인증서, Key
- 그 자체 - 홍채, 지문, 각막, 얼굴, 목소리, 행동, 서명
- 위치하는 곳 - 지역, IP 주소
패스워드 취약성
- 패스워드 강력도 테스트 - WebGoat > Authentication Flaws > Password Strength
- 취약한 순서 - 숫자로만 > 영어 소문자로만 = 영어 대문자로만
접근통제
수직적 접근 통제
- 특정 정보의 접근 권한을 수준별로 다르게 설계
- 대부분 웹 사이트는 일반 사용자와, 관리자로 권한을 나눔
수평적 접근 통제
- 여러 사용자가 존재 할때 상대방의 정보를 볼 수 없도록
- 보통 URL의 식별 코드로 사용자를 구분하는데 이를 변경하여 공격 가능
- 쿠키나 세션 값을 바꾸는 것으로도 공격 가능
비즈니스 로직 접근 통제
- 사용자 권한과 상관없이 민감하거나 중요한 정보에 대한 접근
SQL 인젝션 공격
SQL
- 데이터베이스를 관리하기 위한 언어
- DML(조작어), DDL(정의어), DCL(제어어)으로 나뉨
SQL 인젝션 공격
- 웹 어플리케이션과 데이터베이스가 연동되는 부분에 SQL을 삽입하여 공격
- 보통 로그인, 게시물 검색, 우편번호 검색, 자료실 부분을 공격
- 로그인 부분에
'or''='
> Where 문에 삽입되면 항상 true가 됨
XPath 삽입 공격
XPath
: XML 문서로부터 선택한 노드를 사용하기 위한 프로그래밍 언어- 로그인 부분에
'or''='
> XPath 처리 부분에 항상 true가 됨
XSS 공격
XSS 공격 기본 원리
- A가 B에게 악성 코드가 담긴 메일을 보냄
- B가 메일을 읽으면 B의 쿠키가 철수에게 전달됨
- A가 B의 쿠키로 B의 메일을 훔쳐봄
웹의 사용자 인증 방법
- 아이디, 패스워드 기반으로 사용자 신원 확인
- 신원 확인되면 사용자에게 고유한 값을 전달
- 사용자는 고유한 값으로 사이트 이용
쿠키
- 웹 사이트에 방문하면 생기는 4KB 이하의 파일
- 클라이언트의 신분을 저장
- 웹 서버에 접속하면 사용자의 쿠키를 서버에 전송
- 아이디와 패스워드를 저장한 경우 다시 입력하지 않아도 로그인 가능
- 쿠키의 용도-사이트 개인화, 장바구니, 타깃 마케팅, 웹 사이트 이용 방식 추적
- 쿠키는 실행 불가능함(단, 인터넷 익스플로어 3.0 제외)
XSS
- 다른 사용자의 정보를 추출하는 공격
- 입력을 받는 부분에서 필터링을 하지 않으면 공격 가능
XSS 공격 유형
Stored XSS
- 사용자가 글을 저장하는 부분에 스크립트 코드 입력
- 예를들어 게시판에 js의 script 태그를 써서 올림. 사용자 들어가면 script 실행
Reflected XSS
- 과정
- URL 변수 부분에 악성 스크립트가 삽입된 링크를 클릭
- 변수에 포함된 악성 스크립트가 html 파일에 그대로 렌더링되어 실행
- 악성 스크립트는 다른 사이트에 접속해 사용자의 쿠키를 전송
- CSR이든 SSR이든 url의 변수가 html에 그대로 렌더링되면 발생
CSRF
- 과정
- 공격자가 보낸 악성 링크를 클릭
- 현재 특정 웹사이트에 로그인된 상태
- 로그인된 사이트에 공격자가 원하는 요청을 보냄
- XSS는 아니지만 유사함
- XSS와 다르게 쿠키를 탈취하지 않고 인증된 사용자의 컴퓨터에서 직접 요청을 보냄
- 예를들어 이미지 태그 src에 악성 링크을 입력
소스 코드 취약점 분석
- 블랙 박스 테스팅 : 겉만 보는것
- 화이트 박스 테스팅: 속을 보는것
- 그레이 박스 테스팅: 속, 겉 보는것
취약점 종류
입력값 검증 취약점
- SQL 인젝션
- XSS
- 위험한 형식 파일
- 디렉토리 경로 조작 - 상위 경로 중요한 파일 접근 가능
세션 처리 및 접근 통제 취야
- 매개변수와 쿠키 조작
- 강제 브라우징
코드 내 중요 정보 노출 취약점
- 중요 정보 평문 전송 - 암호화하지 않음, HTTPS나 SSL 등으로 보내야 함
- 암호화 함수를 이용한 전송 - 복호화 함수나 복호화 키가 쉽게 노출됨
- 하드 코딩된 패스워드
- 주석 처리된 중요 정보
프로그래밍 언어별 주요 취약점
자바
함수 | 설명 |
---|---|
getParameter | URL에서 사용하는 변수값과 POST 요청에서 전달되는 값 처리 |
getHeader | HTTP 헤더에서 전달받은 값을 처리할 때 사용 |
getRequestURL | URL에서 전달받은 값을 처리 |
getCookies | 쿠키 값을 받는 데 사용 |
setAttribute | 현재 세션 내에 데이터를 저장할 때 사용 |
getAttribute | 현재 세션 내에 저장된 데이터를 가져오는데 사용 |
FileInputStream | 파일을 읽거나 쓰는데 사용 |
createStatement | 데이터베이스에 접근 |
ASP.NET
함수 | 설명 |
---|---|
Params | URL에 포함된 인자값, POST 요청의 본문 등에서 전달되는 값 처리 |
QueryString | 요청 쿼리문에 있는 변수명과 값의 집합 처리 |
Url, RawUrl | URL에 포함된 값을 처리하는데 사용 |
UrlReferer | 요청 HTTP Referer 헤더에 정의된 URL 정보를 가져옴 |
InputStream | 클라이언트로부터 받은 요청을 그대로 반환하거나 다른 API에서 받아온 정보를 처리 |
Add | 세션에 새로운 항목을 추가 |
Item | 해당 Set에 지정한 항목의 값을 가져오거나 설정 |
Keys | 해당 Set의 모든 항목명을 반환 |
FileStream | 파일을 읽거나 쓰는 데 사용 |
SqlCommand | 데이터베이스에 접근 |
웹 취약점 분석 도구
브라우저 개발자 도구
- 크롬, 엣지, 파이어 폭스 등
버프슈트
- Target 기능 - 타겟 사이트 정보(사이트 구조, HTTP 헤더, Request, Response)
- Intruder 기능 - 웹 페이지에 전달되는 변수값을 자동 생성 탐색(payloads 수정)
- Repeater 기능 - 타겟 탭에서 특정 페이지에 요청을 Repeater에 전달하여 재전송
웹 스캐너들
- Nikto: 취약점 데이터베이스로 만든 취약점 스캐너
- N-Stealth: 웹 취약점 스캐너
- Absinthe: SQL 취약점 툴
- sqlmap: SQL 인젝션 자동화 공격에 많이 사용
- Acunetix: 휴리스틱 웹 취약점 스캐너, 현재 가장 많이 사용함
- AppScan: 웹 취약점 스캐너
SNS 보안
SNS
- 페이스북
- 웹 2.0
SNS 보안 위협과 대응 방안
악성 소프트웨어(Malware)
- 크라임웨어: 온라인 불법 프로그램
- 스파이웨어: 컴퓨터 사용자 정보 몰래 수집
- 애드웨어: 광고를 보여줌
- 브라우저 하이재커: 브라우저 설정 변경, 이상한 사이트로 보내기도함
- 다운로더: 악성 소프트웨어 다운로드 하는거
- 툴바: 사용 툴바를 모방해서 사용자가 입력하는 주소를 교묘하게 변경
- 다이얼러: 특정 번호를 연결되어 정화를 걸 때마다 돈이 빠져나감
- 랜섬웨어: 사용자의 파일을 암호화, 금전요구
대응방안(개인)
- 출처를 모르는, 검증되지 않은 링크, 파일 등 접근 X
- SNS 개인정보 설정
- 안티바이러스 소프트웨어 최신화
대응방안(기업)
- 주요 시스템과 네트워크 접점에 IDS/IPS 설치
- 주요 서버에 호스트 기반 IDS/IPS 설치
- 웹 필터링 프록시, 악성 소프트웨어 필터링 사용
- 메신저나 P2P 프로그램 사용 제한
피싱
- 진짜 사이트와 거의 동일하게해서 개인정보 탈취
이블 트윈 어택
- 와이파이에 Roque AP(가짜 액세스 포인터)로 정보를 가로채어 사용자인것처럼 행동
신원도용
- 허가없이 타인의 신원 정보를 이용하여 시도된 사기 행위
웹 & 웹서버 보안
사용자 인증 측면에서
- 안전한 패스워드 만들기 - 복잡한 비밀번호, 암호화 엑셀에 저장
- 공인인증서 - 공개키 기반 구조, 패스워드보다 강력
아파치 보안
리눅스 환경에서 사용하는 걸로 가정
취약점
- 디렉토리 리스팅
- FollowSymLinks
dpkg --configure -a # DPKG 설정 파일 세팅(아마 안해도 될듯)
apt-get install apache2 # 아파치 설치
systemctl start apache2 # 아파치 시작
ps -ef | grep apache2 # 아파치 프로세스 보기
# localhost 접속하면 됨
vi apache2.conf # 아파치 설정파일 확인
# /etc/apache2/ports.conf 에서 포트 정보 볼수 있음
# /etc/apache2/sites-available/000-default.conf 아파치 홈 디렉토리 설정
# /etc/apache2/mods-available/dir.conf 기본문서 설정(DirectoryIndex으로)
# apache2.conf에서 Options에 Indexes가 설정되면 디렉터리 리스팅함
# 디렉토리 리스팅이란 하위 디렉토리 및 파일을 전부 볼 수 있는것 > 취약점
# /var/www/html에 test 디렉터리를 생성하여 접속하면 하위 파일을 볼수있음
systemctl restart apache2 # 설정 수정하고 재시작
ln -s /etc /var/www/html/etc # FollowSymLinks 설정 확인
# FollowSymLinks 활성화되면 url과 서버 dir 일치 > 취약점
vi /var/log/apache2/access.log # 아파치 접속 로그 확인
# /etc/apache2/sites-available/000-default.conf 에서 로그 형식 설정 가능
# setEnvIf ?????????????????
# dontlog ???????????????????
# /var/log/apache2/error.log에서 에러 로그 확인
보안 정책, 조직, 솔루션
보안 정책 (피라미드)구조
- 정책
- 지침
- 절차
예를 들어
- 규정(정책)-세칙(지침)-지침(지침)-절차(절차)
보안 정책 구분
- regulatory : 규칙으로 지켜야 할 정책
- advisory : 정책이 없을 때 지키도록 ‘권유’하는 정책
- informative : 어떠한 정보나 사실을 알리고자 하는 목적의 정책
보안 수준에 따라
- Security Policy : 상위 관리자가 작성, 5~10쪽, 보호하는 자산, 역할 및 책임
- Standards : 일반적으로 지켜야할 보안 사항
- Baselines : 기본 적인
- Guidelines : 특정 상황에서
- Procedures : 가장 하위 문서, 각각의 절차에 대한 세부 내용(메뉴얼)
ISO 27001
- 가장 널리 사용되는 정보보호 관리체계
랜섬웨어
사용자의 컴퓨터를 악성코드로 감염시켜 데이터를 암호화하고 돈을 요구하는 공격 방법
랜섬웨어 진화
- AIDS 트로이안: 문서화된 최초의 랜섬웨어. 플로피 디스크로 감염
- GPCode: 이메일로 감염. 대칭 암호화 알고리즘 사용. 암호화키는 피해자 pc에 보관
- CryZip, Archiveus, Krotten: 비대칭 암호화 RSA 알고리즘 사용
- Ransome.C: 드라이브 바이 다운로드와 악성 이메일로 감염
- Seftad: 마스터 부트 레코드를 변경하여 부팅되지 않게
- Ravetom: 감염된 컴퓨터를 잠금
- CryptoLocker: 2048비트 RSA사용
- CTB Curve-Tor-Bitcoin Locker: ECC로 암호화
- Android Defender: 백신 앱으로 위장한 모바일 랜섬웨어. AES 대칭키 방식 사용
- Linux.Encoder: GNU/Linux 플랫폼 대상 랜섬웨어로 비트코인 사용
- KeRanger: 맥 OS 대상
- RaaS(Ransomware-as-a-Service, 서비스형 랜섬웨어): 언더그라운드 마켓에서 쉽게 구매가능하며 사용자 친화적이고 수정하기 쉬움
- WannaCry: 2017년에 등장해 전 세계에 큰 피해를 준 대표적인 랜섬웨어. 윈도우 SMB 서버 원격 코드 실행 취약점을 이용. AES를 사용해 각 파일을 다른 키로 암호화한 다음 개별 키를 2048비트 RSA로 다시 암호화.
랜섬웨어 감염 단계
- 감염: 공격자가 악성코드를 전달하는 단계
- 명령 및 제어 서버와 통신: C&C 서버에서 암호화 키를 받고 중요 정보를 서버로 가져옴
- 파괴: 파일을 암호화
- 강탈: 파일의 몸값 지불 방식을 사용자에게 보여주고, 제한시간을 표시해 위기감 조성
랜섬웨어 실습
- AES 키로 파일 암호화
- RSA Public Key로 AES 키 암호화
- RSA Private Key로 AES 키 복호화
- AES Key로 파일 복호화
사이버 안보
2007년 에스토니아에서 동시 다발적 사이버 공격받고 2008년 탈린 메뉴얼이 만들어짐
경찰청에서는 사이버 범죄를 크게 테러형 범죄와 일반 사이버 번죄로 구분
최근에는 국각 초월하여 발생하면 타크넷 및 암호화폐와 연계하여 발생
사이버 범죄 유형
사이버 테러형 범죄
- 해킹: 다른 사람의 컴퓨터 시스템에 무단 침입하여 정보를 빼내거나 파괴
- 악성 프로그램: 고의로 악성코드를 심어 제작 및 유포하는 프로그램
일반 사이버 범죄
- 사기: 인터넷에서 물건을 사고파는 과정에서 발생
- 불법 복제: 저작권을 침해하여 복제
- 불법&유해사이트: 법률에 위배되거나 범죄수단으로 사용되는 사이트
- 사이버 명예회손: 타인에 명예를 훼손하는 글 등을 인터넷에 게시
- 개인정보 침해
- 사이버 스토킹: 상대방이 원하는 접속을 지속 시도, 협박 내용의 이메일 송신하는 경우 등
사이버 스파이
특정 집단의 정보를 몰래 빼내어 다른 곳으로 유츌하는 행위
Red October
- 2007년 부터 지금까지 각구 정부 및 외교기관을 주요 대상으로 악성프로그램을 유포하여 정보를 빼내는 사이버 스파이 활동
중국 61398부대
- 1000여 명에 달하는 전문 직업 해커로 구성 2006년 부터 최소 150건의 공격을 감행
사이버 전쟁
- 미국>이라크: 미국이 프린터 장비에 바이러스를 이식하여 이라크에 수출
- 코소보 사태: NATO 군사령부 홈페이지를 변조하고 이메일을 대랑 발송하여 서버 운영 방해
- 에스토니아전: 3주간 대통령궁, 의회 등에 DDoS 공격을 감행
- 러시아>조지아: 3일간 조지아 정부, 군 정보 시스템 등에 DDoS 공격
사이버 안보 동향
미국
- 1998년 - 주요 기반 시설에 대한 범정부적 보호 체계를 마련
- 2001년 - 9.11 테러를 계기로 국토 안보 차원에서 국토안전보장국과 국토안보회의 설립
- 2002년 - 사이버 안보를 총괄 책임지는 국토안보부(DHS) 설립
- 2009년 - 사이버 공간 정책 리뷰 발표 10가지 과제
- 2010년 - 사이버 공간을 제 5의 전장으로 인식, NICE 발표
- 2011년 -