Network
ARP level
ARP spoofing
- ARP 단계(MAC주소를 속이는것)
- 라우터인척하거나 서버인척해서 sniffing까지함
man in the middle attack
Smurf attack
- 원래 관리자가 서브넷 관리를 위해 만든 전체로 ping보내는 명령어를 공격자가 페킷의 SIP를 희생자의 ip로 설정해서 여러번(매우 많이) 실행하는것
Packet sniffing(MAC Flooding)
- 허브, 스위치 나오면서 나온거
- 허브는 연결된 모든 노드에게 보내고 스위치가 목적지한테만 보냄(이건 매핑 테이블을 통해 가능 이게 꽉차면 기존걸 지워야하고 매핑 테이블에 저장되어 있지 않으면 브로드케스트 해서 허브랑 결국 똑같아짐)
공격자가 가짜 MAC주소를 만들어 저장하게 만드는 공격(그 후엔 허브처럼 변해서 페킷 훔치기 쉬워짐
TCP/IP level
IP spoofing
- 출발지 ip(SIP)를 속이는 것(raw socket프로그래밍으로 속이기가 가능)
- ip spoofing 때문에 dos, ddos, session hijacking이 가능
- ingress/egress 필터로 막을 수 있음
- egress가 밖으로 나가는 페킷을 관리하는거(굿 시티즌 필요해서 달성하기 어려움)
Session hijacking
- ip 스푸핑에서는 공격자가 페킷을 가로채는것 까지는 불가능한데 여기선 가능함
- 세션을 가로채서 공격자가 희생자인척 하고 서버에서 페킷을 보내는것
- TCP 세션을 가로채려면 ISN을 알아야함(ip,port,key,time 들어감)
- 세션 가로채서 sip에 희생자 ip를 넣어서 ip스푸핑 공격도 들어가는거고 희생자가 서버에게 페킷을 보내지 못하게 희생자를 다운 시키기고 싶으니까dos,ddos공격도 사용함
- 공격자가 라우터를 점령해서 라우팅 테이블을 망치는 공격
- 요즘엔 라우터에 key값을 사용해서 메세지랑 같이 해쉬해서 보내면서 방어함
Port scan
- 열려있는 포트(열려있으면 취약하니까)를 찾는 공격
- TCP연결에서 사용하는 flag비트를 특정하게 설정하면 그에따른 응답이 오는데 이걸 이용
Firewall
- 얘는 기본적으로 모든 페킷을 다 열어본 뒤 기준에 맞는거만 통과시키거나 방어하는거임
- Stateful/Stateless
- 연결의 상태를 기억하냐 안하냐의 차이, 일반적으로 stateful이 처리가 빠름, 보안적 측면에서는 떨어질수도 있음
- stateful : 한 번의 허용된 연결이나 패킷이 있다면 해당 연결에서 발생하는 페킷도 허용하는 방식
- DMZ : 서비스를 위한 웹서버와 보안이 중요한 DB를 방화벽의 다른 쪽에 두는 방식(웹서버가 DMZ에 있음)
- 웹서버에서 DB로 가는건 서비스를 위해 필수적인데 위처럼 해두고 DB로 가는쪽은 PORT를 하나만 열어두면 보안이 쉬움
High Availability
- 여기서 L4/L7 스위치 나옴
- 방화벽이 여러개일때 스위치가 알맞은 방화벽으로 보내야함(ip,port로 XOR사용 xor은 순서 바뀌어도 동일해서 오고갈때 같은 방화벽 사용 가능)
- 최근에는 위 방법으로 꼭 같은 방화벽 통과 아내도 되게함(커널 단계에서의 세션 동기화라고함)
- 여기서 라우터 vs 스위치도 나옴
- 스위치는 MAC주소 기반이고 라우터가 IP주소 기반(그래서 라우터를 통한 VRRP 로드 밸런싱이 나옴)
- VRRP
- 모든 라우터가 공통된 가상 IP를 가짐
- 마스터가 먼저 가상 IP를 사용, 마스터는 주기적으로 슬레이브에게 자기가 살아있다는 메세지를 보냄
- 살아있다는 메세지가 안오면 슬레이브가 마스터가 죽었다고 판단하고 가상 IP를 사용(마스터가 되는 것), 가용성 달성
- 일반적으로 ping을 사용 db에서는 heartbeat
- 당연히 슬레이브 중 그 다음 누가 마스터가 될지 선정하는 정책이 필요 이걸 Election process라고함)
- 슬레이브가 쉬는게 맘에 만들면 가상 ip를 여러개 사용할 수 있음 서로가 서로의 마스터이자 슬레이브가 되는 것
어떤 지점이 고장났을때 전체 서비스가 실행이 불가능 해지면 그 지점을 single point of failure라고 부름
- 그걸 제거하기 위해 방화벽, db, 스위치 라우터 다 2개 이상씩두었는데 911때 그걸 한번에 날려버려서 아얘 똑같이 다른 지역에 2개를 만들어버림 -> Disaster Recovery Center, DR센터라고 부름
- GSLB -> DR센터 중에서 한가한 서버의 주소를 리턴해줌 그때 TTL도 같이 보냄(TTL이 길면 성능 좋고 짧으면 고장에 잘 대응)
가용성 확률 계산해보기
Intrusion Detection System
- 이상탐지 시스템,
- 위치, 알고리즘 각각 2개씩 총 4개의 조합이 있음
- 위치 : network, host
- 알고리즘 : signature, anomaly-based
- network, signature를 일반적으로 많이 사용
- True/False, Positive/Negative 구분할줄 알아야함
- Snort
- DDOS
- botnet이라는 개념이랑 같이 나옴
- bot master(공격자), bots(감염 피시), C&C서버(bot들을 관리하는 pc)
- C&C서버에 bot들이 접속하게 해야함, 똑같은 도메인 네임 생성 알고리즘을 심어서 실행, 주기적으로 바꿈(추적이 어려워짐)
- Intrusion Prevention System
- IDS + FW(방화벽)의 개념
- ISN를 중간에서 체크해서 ip spoofing을 하는지 안하는지 검사
Web
WEB Overview
- http나옴, stateless다
- Request, Reply 메세지 정도 보기
Web Shell
- exe파일을(주로 shell을 실행하는 파일)을 서버가 저장하게 만듬(자소서 같은걸로 위장)
- 공격자가 브라우저를 통해 위의 exe파일에 접속해 실행하면 공격 성공(위치를 다 알아야해서 어려움)
- 디렉토리에 실행권한을 제거하거나 확장자명, 파일크기를 제한하는식으로 막아야함
Cookie
- 클라이언트에 저장, 서버에 같이 내면 쿠키를 사용하여 이전 연결의 정보를 사용가능함(이게 http에 state를 부여하는 역할)
- 공격자가 쿠키를 가로채면 문제가 생기니까 쿠키의 원래 내용 value와 key를 concat해 해쉬를 씌워 T를 만들고 value에 T를 붙여 같이 보냄
Session management
- 세션 토큰을 사용해서 사용자의 세션을 유지,관리 하는것
- 위의 쿠키도 세션 토큰 중 하나고 여러 가지가 있음
- 여기서 referer라는게 나옴(tcp해더에 클라이언트의 이전 접속 url을 추가해서 보낸것)
- 세션 토큰은 아니고 비슷한 역할 가능
- 서버는 이게 갑자기 바뀌는지 확인 가능하지만 공격자는 역으로 이걸로 클라이언트인척 가능
XSS(Cross Site Scripting)
- 피해자가 클라이언트
- Persistent(stored), non Persistent(reflected)가 있음
- Persistent는 공격자가 글을 작성(서버에 저장)피해자가 글을 누르면 글에 포함된 악성 코드가 자동 실행
- Non, persisten, 검색할때 악성 코드를 주소에 넣어서 검색하게 만들면 그 코드가 바로 실행될 수 있음
- HTML sanitization해서 막아야함
- Sanitization : 입력부분에서 유해한 부분을 제거하거나 미리 지정한 분자로 치환하게 하는 방법
CSRF
- 피해자가 서버, 주로 위의 XSS와 같이 많이 사용함
- XSS로 피해자한테 비밀번호 변경 명령을 실행한다고 가정
- 비밀번호가 공격자가 지정한 것으로 바뀜
- 공격자가 피해자의 id, 바꾼 비밀번호로 서버에 접속(만약 권한이 높은 피해자였다면 피해가 심각)
- 만약 사이트 자체가 비밀번호를 바꿀때 기존 비밀번호도 입력하는 형태였다면 위 명령어에 기존 비밀번호도 들어가야하는 것이라 보안이 좋아짐
SQL Injection
- 웹에서 로그인, 회원가입은 사용자가 빈칸에 입력한 값을 가지고 SQL쿼리문을 만들어 실행하는 건데
- 빈칸에 악의적인 SQL명령어를 입력하면 이게 실행 되는것
- SQL에서 --뒤가 가 주석처리되는걸 이용함
- 이것도 Sanitization으로 막을 수 있다
Insecure Direct Object Reference
- url주소를 찍어서 맞춰서 링크를 통해 접속하지 않는 것
- 관리자 페이지 접속을 위해 admin, manager등의 단어를 많이 사용함, 그래서 관리자 페이지 접속할때는 특정 ip만 허락하는등의 정책 필요
Access Control for Administration
- 위에거랑 이어지는 내용, 관리자 권한에 대해서 잘 관리해라 그런 내용임
Vulnerability Scanner
- 웹의 취약점을 파악해주는 도구, 취약한 공격방법을 알려줌(양날의 검)
- 수업에서는 쇼단으로 예시 보여줌
단어정리
- OWSAP : 년마다 이슈였던 공격방식 순위 메기는 곳
- SBOM(Software Bill of Materials) : 소프트웨어 만들때 구성요소를 정리해야한다
- Dark Web, Tor, Onion Routing : Dark Web이 안좋은 사이트, 접속할때 추적을 피하기위해 p2p를 사용해 목적지 ip를 양파껍질처럼 계속 추가하는게 onion routing, 이걸 사용하기위해 쓰는 특별한 브라우저가 Tor
- FDS(Fraud Detection System) : 신용카드 같은게 사용자가 평소 잘 안가는 곳에서 결제되면 의심하는 것
- IT, ICT vs OT CPS(Cyber-Physical System). 이란 핵발전소 스턱스넷(stuxnet) : OT CPS가 물리적으로 관리하는 개념, 완벽한줄 알았는데 이란 저기서 USB꽂아버려서 거기있던 악성코드 감염됨
- APT(Advanced Persistent Attack) : 긴 시간을 가지고 집요하게 공격하는 방식
- 사회공학적 기법 : 사회적으로 사람을 이용하는 것
- spear phising : 피싱 공격, 이메일이나 문자등
- MITRE : MITRE회사가 만든 취약점이나 보안을 평가하는 프레임워크임
- BCP (Business Contingency Plan) : 기업의 지속적인 운영을 보장하며 재난이나 위기 상황에서의 영향을 최소화하는 것
- 제로트러스트 : 기존 보안은 외부에서 내부로 오는 것을 위주로 차단하고 했는데 이거는 내부에 있는 애들도 다 안믿어서 뭐 할때마다 검사하고 인증하는 거임
- 제로데이 취약점 : 아직 방어방법이나 대응방안이 없는 취약점
- 공급망 공격 : 공급망이 여러 회사를 거치니까 그 중에 하나를 공격하면 공급망 전체가 망가진다는 개념
- SOAR(Security Orchestration, Automation and Response) : 보안 사건이 발생하면 기록하고, 이를 활용해 대응 프로세스를 자동화해 실행하자는 것