📄 2025.12.31 (Day 46) - 오프라인 미팅과 DNA Lab 역할 분담
1. 핵심 활동 정리
오프라인 미팅 개요
| # | 핵심 사항 | 내용 | 비고 |
|---|---|---|---|
| 1 | 미팅 형태 | 오프라인 대면 회의 | 집중적 기획 및 역할 분담 |
| 2 | 주요 안건 | 역할 분담 및 구체적 업무 배분 | 각자 강점 기반 배치 |
| 3 | 페르소나 설정 | DNA Lab 서비스 구체화 | 프로젝트 정체성 확립 |
| 4 | 개발 방향 | 기존 구조 활용 + 커스터마이징 | 효율성 극대화 |
| 5 | 예상 난이도 | 웹 해킹 지식 부족으로 난항 예상 | 학습 곡선 존재 |
역할 분담 결과
| 팀원 | 담당 영역 | 주요 책임 | 필요 역량 |
|---|---|---|---|
| 호짱 (팀장) | Python 진단 스크립트 개발 | 12개 취약점 자동 탐지 도구 구현 | Python, 웹 보안 지식, 자동화 |
| 팀원 A | 백엔드 개발 | Spring Boot 로직 구현 및 취약점 삽입 | Java, Spring, DB |
| 팀원 B | 프론트엔드 개발 | Thymeleaf 템플릿 DNA Lab 테마 변환 | HTML/CSS, UI/UX |
| 팀원 C | 문서화 및 발표 자료 | 보안 가이드, 대응 방안 문서 작성 | 기술 문서 작성, PPT |
2. DNA Lab 페르소나 설정
서비스 콘셉트
DNA Lab - 개인 유전자 분석 서비스
| 구분 | 내용 | 보안 관점 |
|---|---|---|
| 서비스 설명 | 개인의 DNA 샘플을 분석하여 건강, 조상, 유전 질환 예측 제공 | 민감한 생체정보 처리 |
| 타겟 고객 | 건강 관심층, 가족력 확인 필요자, 조상 추적 관심자 | 개인정보 + 유전정보 이중 보호 필요 |
| 핵심 기능 | DNA 검사 신청, 결과 조회, 가족 매칭, 건강 리포트 | 다양한 공격 표면 존재 |
| 차별화 포인트 | 23andMe 유출 사건 기반 실제 사례 연계 | 프로젝트 현실성 및 임팩트 강화 |
기존 인트라넷 -> DNA Lab 매핑
| 기존 기능 | DNA Lab 기능 | 변경 사항 | 보안 고려사항 |
|---|---|---|---|
| 게시판 글쓰기 | DNA 검사 신청 | 제목 -> 이름, 내용 -> 검사목적 | 개인정보 입력 검증 |
| 게시판 목록 | 검사 신청 내역 | 신청 상태 표시 추가 | 타인 신청서 접근 차단 |
| 게시판 상세 | 검사 결과 조회 | 진행 단계, PDF 다운로드 | 권한 검증 필수 |
| 파일 다운로드 | DNA 리포트 다운로드 | PDF 형식 건강 리포트 | 경로 조작 공격 대상 |
| 직원 검색 | DNA 매칭 (가족 찾기) | 유전적 유사도 기반 검색 | 민감정보 노출 위험 |
| 마이페이지 | 개인정보 및 가족 관계 | 유전정보 연동 | 수평적 권한 상승 취약 |
3. 역할별 상세 업무 정의
호짱 - Python 진단 스크립트
담당 이유:
- 보안 교육 과정에서 웹 해킹 기법 학습
- Python 자동화 스크립트 작성 경험
- SOC 분석가 지망 - 취약점 탐지 역량 필수
개발 범위:
- XSS Scanner - Stored XSS (게시판, 신청서), Reflected XSS (검색, URL 파라미터)
- SQL Injection Scanner - 로그인 우회, 검색 기능 공격, URL 파라미터 삽입
- CSRF Scanner - 토큰 존재 여부, 토큰 검증 우회 시도
- 인증/인가 Scanner - 약한 비밀번호 정책, 세션 관리 취약점, 권한 검증 미흡 (IDOR)
- 파일 관련 Scanner - 파일 업로드 취약점, 경로 조작 (Path Traversal)
- 기타 - 코드 인젝션 (Thymeleaf), 쿠키 변조, 비밀번호 복구 취약점
예상 난관:
- 웹 해킹 실무 경험 부족
- 이론과 실제 구현의 괴리
- 오탐/미탐 최소화 어려움
팀원 협업 구조
호짱 -> 백엔드 개발자:
- “로그인 페이지에 SQL Injection 취약점 넣어주세요”
- “CSRF 토큰 검증 로직 빼주세요”
- “파일 다운로드 시 경로 검증 안 하게 해주세요”
백엔드 개발자 -> 호짱:
- “여기 URL이에요: /dna/apply”
- “파라미터 이름은 ‘username’, ‘password’입니다”
- “세션 쿠키 이름은 ‘JSESSIONID’입니다”
호짱 -> 프론트엔드 개발자:
- “검색창 입력값 이스케이프 처리 빼주세요”
- “신청서 내용 필드에 script 태그 입력 가능하게 해주세요”
프론트엔드 개발자 -> 호짱:
- “어떤 페이지를 스캔해야 하나요?”
- “입력 필드 name 속성 알려드릴게요”
4. 웹 해킹 지식 부족 문제
직면한 어려움
| 문제 영역 | 구체적 어려움 | 영향도 |
|---|---|---|
| 이론과 실무 격차 | 교재의 개념은 알지만 실제 공격 구현은 낯섦 | 높음 |
| HTTP 프로토콜 이해 부족 | 요청/응답 구조, 헤더, 쿠키 동작 원리 미흡 | 중간 |
| 페이로드 작성 경험 부족 | 어떤 페이로드가 효과적인지 감이 없음 | 높음 |
| 프레임워크 특성 모름 | Spring Boot, Thymeleaf 동작 방식 불명확 | 중간 |
| 오탐/미탐 판단 기준 모호 | 언제 취약하다고 판정해야 하는지 애매함 | 높음 |
학습 곡선 대응 전략
즉시 학습 필요 사항:
- HTTP 요청/응답 구조
- Burp Suite로 실제 트래픽 관찰
- requests 라이브러리 Session 객체 이해
- 쿠키, 헤더 조작 방법 실습
- 실제 페이로드 연구
- OWASP Testing Guide 참고
- PortSwigger Web Security Academy 실습
- 기존 도구 (sqlmap, XSStrike) 분석
- 자동화 스크립트 패턴
- BeautifulSoup으로 HTML 파싱
- 정규표현식으로 응답 검증
- 예외 처리 및 로깅
우회 전략: 모르는 부분은 단순화, 복잡한 공격보다는 확실한 기본 페이로드 위주로 접근, 고급 기법은 시간 남으면 추가
5. 오프라인 미팅 주요 결정사항
커뮤니케이션 규칙
일일 체크인 (매일 오후 9시 - 진행상황 공유):
- 오늘 한 일
- 내일 할 일
- 블로커 (도움 필요한 부분)
이슈 공유 채널:
- Notion / GitHub / 카카오톡 단체방
- 급한 문제는 즉시 공유
- 기술적 질문은 상세히 작성
코드 공유:
- GitHub 레포지토리 사용
- 브랜치 전략: feature/기능명
- 커밋 메시지: “[영역] 작업 내용”
6. DNA Lab 구체화
사용자 여정 (User Journey)과 취약점 매핑
-
회원가입
- 이메일, 비밀번호, 개인정보 입력
- [취약점] 약한 비밀번호 허용
-
DNA 검사 신청
- 이름, 생년월일, 검사 목적, 신분증 업로드
- [취약점] XSS (이름 필드), 파일 업로드
-
검사 진행 상황 조회
- 신청 내역 리스트 확인
- [취약점] IDOR (타인 신청서 접근)
-
결과 리포트 다운로드
- PDF 파일 다운로드
- [취약점] Path Traversal
-
가족 찾기 (DNA 매칭)
- 유전적 유사도 검색
- [취약점] SQL Injection (검색 기능)
-
개인정보 수정
- 마이페이지에서 정보 변경
- [취약점] CSRF, 세션 관리
23andMe 사건 연계
실제 사건 개요:
- 2023년 10월 발생
- 690만 명 유전정보 유출
- Credential Stuffing 공격 (타 사이트 유출 계정 재사용)
- 유전정보 특성상 변경 불가능 -> 평생 영향
프로젝트 적용 시나리오: DNA Lab이 23andMe와 유사한 취약점을 가진 경우
- 약한 비밀번호 정책 -> Brute Force 공격 성공
- 인증 우회 (SQL Injection) -> 로그인 없이 시스템 접근
- 권한 검증 미흡 (IDOR) -> 타인의 DNA 리포트 열람
- 결과: 690만 명급 대규모 유출 재현 가능
7. 배운 점 및 인사이트
오프라인 미팅의 가치
- 즉각적 피드백: 온라인 대비 의사결정 속도 5배 빠름
- 신뢰 구축: 대면 소통으로 팀 결속력 강화
- 세밀한 조율: 화면 공유로 구조 설명, 즉시 합의
- 집중도 향상: 외부 방해 요소 차단, 몰입 환경
역할 분담의 중요성
- 명확한 책임 소재: 각자 자기 영역에 집중 가능
- 강점 기반 배치: 효율성 극대화
- 상호 의존성 인식: 내 작업이 남에게 영향 -> 책임감 증대
- 부담 분산: 팀장 혼자 짊어지지 않아도 됨
웹 해킹 지식 부족 직면
- 겸손함 유지: 모르는 것 인정하고 학습 자세
- 실습 중심 학습: 이론보다 직접 해보며 배우기
- 커뮤니티 활용: PortSwigger, OWASP 같은 리소스 적극 활용
- 단순함의 미학: 복잡한 공격보다 확실한 기본기
페르소나 설정의 효과
- 맥락 제공: 단순 기능 나열 -> 스토리 있는 서비스
- 현실성 강화: 23andMe 사건으로 설득력 증가
- 차별화 성공: 다른 팀과 겹치지 않는 독특함
- 동기부여: 실제 일어난 사건 재현한다는 사명감
8. Quick Reference
역할별 핵심 키워드
| 역할 | 핵심 기술 | 주의사항 |
|---|---|---|
| 호짱 | Python, requests, BeautifulSoup, 정규표현식 | 오탐 최소화, 로그인 상태 유지 |
| 백엔드 | Spring Boot, JPA, Thymeleaf, MySQL | 의도적 취약점 명확히, 주석 처리 |
| 프론트엔드 | HTML, CSS, Thymeleaf, Bootstrap | DNA Lab 테마 일관성 유지 |
| 문서화 | Markdown, PPT, 보안 가이드 | 비전문가도 이해 가능하게 작성 |
Today’s Insight:
오프라인 미팅을 통해 프로젝트가 추상적 계획에서 구체적 실행 단계로 전환되었다. DNA Lab이라는 명확한 페르소나 설정은 단순한 게시판 프로젝트를 현실감 있는 보안 시뮬레이션으로 탈바꿈시켰고, 23andMe 사건과의 연계는 프로젝트에 사회적 의미를 부여했다. 역할 분담 과정에서 각자의 강점을 기반으로 책임을 명확히 한 것이 팀의 효율성을 극대화할 것으로 기대된다. 다만 Python 진단 스크립트 개발을 맡으면서 웹 해킹 지식 부족을 절감했고, 이는 앞으로 극복해야 할 주요 과제다. 이론과 실무의 괴리를 메우기 위해 학습과 실습을 병행하며, 확실한 기본 페이로드 위주로 접근하는 전략을 세웠다. 내일부터는 본격적인 코딩에 돌입하며, 팀원들과의 긴밀한 협업을 통해 각자의 부족함을 보완해 나갈 것이다.