SlideShare une entreprise Scribd logo
1  sur  98
/ 99
메이플스토리 사례를 통해 살펴보는
서버사이드 봇/핵 탐지 시스템
InfoSec Team, 넥슨 아메리카
강병탁 (btkang@nexon.net)
/ 99
이 세션은
백엔드/프론트엔드 개발에 촛점을 맞춥니다.
운영상 발생하는 프로세스에 촛점을 맞춥니다.
만든 시스템을 실전에서 지속적으로 유지할 수 있는지에 중점을 두었습니다.
/ 99
Agenda
1. 현업에서 느끼는 현실적인 제약
2. 한계를 극복하기 위한 디자인과 구조
3. 메이플스토리 도입 사례
4. 특정 게임을 넘어서, 타 게임을 위한 플랫폼화
/ 99
발표자 소개
강병탁 (btkang@nexon.net , window31)
-현재 : 넥슨 아메리카 – InfoSec team 팀장
-과거 : 넥슨 코리아 – 게임보안팀 팀장
-월간 마이크로소프트웨어 해킹/보안 칼럼 작가 (2010 ~ 2012)
-“리버스 엔지니어링 바이블” 작가
/ 99
Agenda
1. 현업에서 느끼는 현실적인 제약
2. 한계를 극복하기 위한 디자인과 구조
3. 메이플스토리 도입 사례
4. 특정 게임을 넘어서, 타 게임을 위한 플랫폼화
5
/ 99
더 설명하기 이젠 지겨우므로 가볍게 스킵…
대한민국 Active-X 와 상황이 비슷
클라이언트 보안의 한계
빈대 잡으려다 초가삼간 다 태운다
해커 정상유저 작살낸다
6
/ 99
세상이 어느 세상인데 아직도 클라이언트 사이드에서 보안하나요?
우리도 서버 사이드 탐지 시스템 하나 만들죠! 우리도 그정도는 될수있어요!
우리도 서버로 갑시다
7
특전사가 될거라면…
이정도 포스는
보여야 되는거
아닌지…
/ 99
하지만 정작 현실은…
8
/ 99
서버 사이드 탐지 시스템은 이상론에 불과한 것인가?
(송중기 같은 군인이 현실에 존재하지 않는 이유?)
먼저 문제점을 환기해 보고, 해결 방법을 고민해 보았습니다.
단골로 고민하는 문제
9
/ 99
로그 분석의 악몽
10
/ 99
일단 로그가 너무 많다.데이터 핸들링 문제
11
/ 99
그래서 DB Job 이 도는데 보통은 하루에 한번이다.
해커는 핵을 써도 하루 정도는 안전하다
실시간 BAN 문제
12
나, 하루살이!
하루 정도는
살수있지
후훗.
/ 99
오탐! 자동 BAN 의 신뢰성 문제
13
나
터미네이터는
존 코너를
보호한다.
내가
존 코너야
ㅄ아!
/ 99
스레시홀드를 바꾸려고 할 때
단지, 10을 5로 바꾸고 싶을 뿐인데!
탐지 기준값 변경이 번거로운 문제
14
그거 바꾸려면 빌드
다시해야 되는데요?
빨라도 다음주에
나갑니다…
이미 3일은 못잔 포스….
개발자
/ 99
if (dwDeathCount > 10)
{
//
DoBAN();
}
하드코딩의 악몽
15
/ 99
그래서 DB 의 SP 로 처리하는 케이스가 많지만
16
/ 99
역시 피폐한 DBA 들…
17
개발팀이 하던일이 DB팀으로 옮겨갔을 뿐…
(운영팀 입장)
또 SP 내용 바꿔달라고요?
지난번엔 10에서 5로
바꿔달라더니
이번엔 5에서 7로…
DBA
DBA 도 이미 3일은 못잔 포스….
/ 99
웹 운영툴이 가진 일반적인 문제
18
사용자가 원한 것 개발자가 만들어 준 것
/ 99
모 게임의 오토밴 시스템
19
/ 99
데이터분석 전문가들의 등장
20
/ 99
하지만, 그걸 본 운영팀의 반응
21
/ 99
서버사이드 탐지 시스템을 개발할 때 항상 겪는 문제
이것은 개발팀의 일인가?
DB팀/데이터분석팀의 일인가?
보안팀의 일인가?
운영팀의 일인가?
누가 개발의 주체가 될 것인가?
22
/ 99
기술 자체에 너무 몰입하지 말자.
해킹방어는 속도가 생명이다. 일단 속도개선에 중점을 둬보자.
각 팀은 당연히 저마다 가진 사정이 있을 수밖에 없다. 최대한 다양한
팀의 이야기를 들어보자.
누군가 끌어가는 사람 PM 롤이 필요하다
마지막으로, 정작 이것을 사용하는 팀의 입장에서 생각해 보자.
문제점 요약
23
/ 99
실무 팀과의 형식적인 “회의” 말고 실질적인 “인터뷰”를 거쳐서
그들이 힘든 점이 무엇인지 얻어내는 작업을 먼저 거쳤습니다.
개선하기 위해
24
/ 99
Agenda
1. 현업에서 느끼는 현실적인 제약
2. 한계를 극복하기 위한 디자인과 구조
3. 메이플스토리 도입 사례
4. 특정 게임을 넘어서, 타 게임을 위한 플랫폼화
25
/ 99
운영팀이 빡친 이유
26
일일히 데이터를
요청해야하고
값만 하나 바꾸고 싶을
뿐인데
너무 오래 걸려요
나 보안팀…
마음만은 송중기
나 운영팀…
/ 99
개발/DB팀이 빡친 이유
27
너무 요청이 자주 오고
구조상 시간이 오래
걸릴 수밖에 없는데
이해를 잘 안해줘요 나 보안팀…
마음만은 송중기
나 개발/DB팀…
/ 99
데이터분석/DB팀이 빡친 이유
28
로그 가져오는데
걸리는 시간이
이루말할 수 없는
고통입니다 나 보안팀…
마음만은 송중기
나 데이터분석/DB팀…
/ 99
먼저– 로그수집 속도, 분석속도를 높히자
29
- 운영팀이 개발/DB팀에 요청하는 시간
- 개발/DB팀이 로그를 뽑는시간 + 복사하는 시간
- 그걸 다시 운영팀이 다시 복사하는 시간
- 액셀에 넣고 삽질하는 시간
/ 99
파이썬과 자동화
30
보통 자동화/로그파싱 하면
일단 떠올리는 것은 파이썬
/ 99
But, 로그 파싱의 악몽
31
이..이제
그만!!!!!
/ 99
스플렁크를 선택한 이유
32
스플렁크 찬양적인 영업적인 이야기 다 버리고, 순수하게 장점만 언급
1) 로그 수집이 자동으로 된다 (서버에 에이전트 하나만 심으면)
2) 로그 파싱을 알아서 해준다 (파서를 따로 개발할 필요가 없다)
3) 그래프를 매우 쉽게 그릴 수 있다 (웹 대시보드를 개발할 필요가 없다)
즉, 시간절약을 해 준다. 괜한 개발이슈가 생기지 않아서 좋다
/ 99
Universal Forwarder
33
서버가 몇개가 어디에 있던 로그수집이 실시간으로 된다.
더이상 개발팀/DB팀에 문의하지 않아도 된다.
/ 99
따라서 이런 로그도 그냥 스플렁크에 넣어버리면,
34
/ 9935
1시간이면 이런 그래프 제작 가능
/ 99
Example
36
N|*|4112|20160418|174836|Illegal ExclRequestTime
Name|AID=32988208|CID=8594518|NAME=lLokzoX|LEV=22
5|JOB=412|FID=211041700|Now=4633069|LastRequestWait
End=4632589|Gap=480|Duration=500|Count=1|
/ 99
스플렁크에 넣고나면
37
/ 99
그래서 이렇게 그래프도 쉽게 만들었습니다
38
/ 99
이렇게 해서 나오는 애들은 바로 핵/봇 이예요!
39
index=gpt-ms sourcetype=maplestory:DetectedHack
+ 블라블라블라~
링크만 그냥 전달하면 다른 사람도 쉽게 볼 수 있다.
/ 99
계정 밴을 할 최종 리스트
40
/ 99
어떤 점이 이득이었는지
41
데이터 수집
로그 파싱
시각화, 그래프화
3개가 해결되었습니다.
/ 99
하지만 여기서부터 수작업으로 연결되는 문제
42
액셀에서 결과 추출하여 DB 팀에 BAN 날려달라고 요청
또는 운영툴에서 하나씩 복사해가며 부정이용자 블럭 시작
/ 99
그 과정을 한번 자동화 해봅시다
43
스플렁크
쿼리 입력
부정 사용자
액셀로 추려냄
대량 제재
버튼 클릭
DB 로
BAN 수행
스플렁크
쿼리 자동 입력
NexonABS 백엔드 서버
부정 사용자
메모리에 추려냄
DB 로
BAN SP 호출
10분에
한번 수행
/ 99
Splunk Python API
44
/ 99
실시간 계정 차단 수행
45
하루살이 해커(24시간 살이 해커) 박멸!
10분마다 핵/봇은 짤려나간다
/ 99
다음 과제 – 컨트롤 능력을 높히자
46
이 화면이
기억나시나요?
/ 99
우리도 이제 이렇게 많은 쿼리들이…
47
No Rule
1 index=gpt-ms sourcetype=maplestory:DetectedHack | search "Running Multiple Instances of MapleStory" | rex
*********************************>w+)" | stats count AS DetectCount by AID
2 index=gpt-ms sourcetype=maplestory:DetectedHack | search "Illegal ExclRequestTime" | stats count as DetectCount
by AID
3 index=gpt-ms AND sourcetype="maplestory:Macro" AND "Invalid User Action Position - Type:0" | stats
count(ACCOUNTID) *********************************, WORLD, DetectCount | sort – DetectCount
4 index=gpt-ms sourcetype=maplestory:Macro "WARP - Illegal UserWarp Tried"| stats *********************************,
WORLD, DetectCount | sort - DetectCount
40 index=gpt-ms AND sourcetype="maplestory:Macro" AND "Invalid User Action Position - Type:0" | stats
count(ACCOUNTID) *********************************, WORLD, DetectCount | sort – DetectCount
41 index=gpt-ms sourcetype=maplestory:Macro "WARP - Illegal UserWarp Tried"| stats *********************************,
WORLD, DetectCount | sort - DetectCount
………………..
/ 99
우리도 웹 운영툴 하나 만듭시다
48
오픈소스, Bootstrap, SB Admin 2
빠른 시간 내에 웹 프론트엔드 개발을
할 수 있음
요즘 대세인 웹 프레임워크
역시 목표는 시간절약!
/ 99
웹 운영툴 (SOC)
49
/ 99
이 페이지 기억하시나요?
50
이런 일이 발생하는
이유는?
/ 99
다시한번 실제 운영하는 쪽과 인터뷰를,
51
우린 블럭작업 할때
이르케 이르케 해여~
요런 요런 순서대로 해요
그게 몸에 익었거든요 나 보안팀…
마음만은 송중기
나 운영팀…
/ 99
즉, 현재의 프로세스를 그대로 운영툴에 반영하자
52
스플렁크에서
데이터 조회
타 서버로그에서
더블 체크
최종 쿼리
뽑아냄
요 스플렁크 쿼리를 던져서 나오는 애들은 BAN 시켜도 됩니다
/ 9953
/ 9954
/ 9955
/ 9956
자, 이제서야 컨트롤이 되는군요!
A조건으로
차단
B조건으로
차단
C조건으로
차단
D조건으로
차단
개발팀 재빌드나
DB 팀 SP 수정 없이
차단 수위를 조절할 수
있게 되었습니다!
/ 99
다음 고민, 누가 운영의 주체가 될 것인가?
57
이 페이지
기억나시는지요?
/ 99
그럼 이제 누가 사용할래? 유지보수는 어떻게 하지?
이것은 개발팀의 일인가?
DB팀/데이터분석팀의 일인가?
보안팀의 일인가?
운영팀의 일인가?
다시 그 질문으로 돌아오게 됩니다
58
/ 99
오진이 발생하는 것을 보면 점점 귀찮고 짜증이 나게 됨
하다보면 좀더 정밀한 검토를 필요로 하게 되는 로그가 꼭 튀어나옴
하지만 고쳐도 고쳐도 끝이 없음, 결국 하게되는 말은,
“자동밴 버튼 누르기 전에 운영팀에서 더블체크 꼭 해보세요~”
결국 운영팀은…
개발하고 나면 꼭 생기는 문제
59
/ 99
결국 운영팀은 버튼을 누르지 않음
60
Auto-BAN
정말
눌러도
되는
걸까?
?!!
/ 99
이것이 바로 시스템이 방치되는 이유
61
오탐이 많아서
못 쓰겠어요
고치기도 힘든것 같고
그냥 안써요
나 보안팀…
여전히 마음만은 송중기
나 운영팀…
/ 99
그래서 다시한번 조사했습니다.
62
수동으로 BAN
날리시기 전에 뭐뭐
체크하세요?
뭘 체크해야
믿고 BAN 날리나요?
나 보안팀…
여전히 마음만은 송중기
나 운영팀…
/ 99
운영팀이 하는 체크로직들.
이정도 체크가 되면
운영팀은 안심하고 BAN 을
날릴 수 있다.
리스트를 뽑았으니,
63
/ 99
그럼 그것도 자동화를 해보죠
64
스플렁크
쿼리 입력
부정 사용자
액셀로 추려냄
대량 제재
버튼 클릭
DB 로
BAN 수행
스플렁크
쿼리 자동 입력
NexonABS 백엔드 서버 10분 루프
부정 사용자
메모리에 추려냄
DB 로
BAN SP 호출
FILTER
화이트리스트
필터링
기능 추가
/ 99
그리고 화이트리스트 룰은 운영팀이 만드세요
65
.
.
/ 99
개발팀 : 소스코드에 하드코딩된거 고치기 싫어!누가 웹 운영툴좀 만들어줘!
DB/데이터분석팀 : 데이터 수집하는 시간과 분석하는 시간 단축해줘!
운영팀 : 우리가 직접 룰조정 할 수 있게 해줘! 오진을 없애줘!
보안팀 : 나도 뭔가 할 수 있게 해줘! 니넨 하는 일이 뭐야? 라는 말 듣기싫어!
각 팀이 가진 불만들을 일단 해결
66
/ 99
Agenda
1. 현업에서 느끼는 현실적인 제약
2. 한계를 극복하기 위한 디자인과 구조
3. 메이플스토리 도입 사례
4. 특정 게임을 넘어서, 타 게임을 위한 플랫폼화
67
/ 99
• 넥슨 아메리카 최장수 게임
• 봇들과 핵이 많은 상태, 3rd party 보안회사의 클라이언트 사이드의
보안시스템은 효과가 거의 없던 상태
• 이미 현존하는 많은 게임서버 로그가 있었지만 활용도가 낮았던 상태
• 로그 파싱의 고통이 있던 상태
• 자동 밴 오진이 있었던 상태
• 게임 경제가 매우 좋지 않았던 상태
Prebuild
68
/ 99
NexonABS 도입 진행
69
프론트엔드, 백엔드 개발 시간이 최초엔 어느 정도 소요되었음 (총 3개월)
미국법인에서 NexonABS 를 붙히게 된 최초의 게임
현재 총 53개의 룰이 있고, 유동적으로 on/off 진행중
/ 99
운영팀의 빠른 솔로 플레이가 가능해짐
70
새로운 룰 작성 : 직접 처리
스레시홀드 조정 : 직접 처리
BAN 결정 : 직접 처리
롤백 : 직접 처리
개발팀과 DB 팀도 시간적 여유가 생김
/ 99
Example
71
ABS Rule 51: MVAC (Monster Vac)
Description: Rule designed to detect illegal forced monster
movements (a.k.a. "monster vac" or "mvac").
Rule Basis: Detection of log: “MobFlashFast - Mob Velocity
suddenly changed” in “DetectedHack” log file.
Test Log Start: 2/10
Detection Criteria: 100 detections per 10 minutes.
Total Detections: 3,433
Unique Accounts: 207
Spot check results: Excellent. Very Low to Zero false positives.
/ 99
운영팀 스스로 제안 가능
72
“ 3번 룰에 대해 운영팀 내에서
탐지 감도를 여러 차례 바꿔가며
1주일간 로깅 상태로 지켜봤습니다.
이대로 자동BAN으로 전환해도
괜찮을 것 같습니다.
찬성하시는지요? ”
/ 99
빠르고 간편한 만장일치 프로세스
73
마케팅팀
개발팀
보안팀
/ 99
유연한 정책
74
In-Game 이벤트 때는 운영팀 스스로
OFF 가능
때로는 마케팅 팀에서 잠시 BAN 을
멈추자고 제안할때도 즉시 처리 가능
/ 99
한참 피크 때에 하루 최고 BAN 횟수
75
OVER 10,000
/ 99
고객센터 오탐관련 불만 티켓 접수건
76
ZERO
/ 99
안정되고 있는 게임 경제
77
/ 99
메이플스토리 공식 보안 프로덕트로 인정받음
78
물론 이런 상을 받은건
아닙니다…
/ 99
Agenda
1. 현업에서 느끼는 현실적인 제약
2. 한계를 극복하기 위한 디자인과 구조
3. 메이플스토리 도입 사례
4. 특정 게임을 넘어서, 타 게임을 위한 플랫폼화
79
/ 99
“로그 파싱하려면 또 …………”
“운영툴 또 만드려면 …………”
“게임마다 특성이 달라서…………”
결론 : “시간을 많이주면 가능합니다만,
현재는 어쨌든 불가능합니다”
사람들이 싫어하는 발언 : 아쉽지만 저희
게임 전용입니다
80
/ 99
하나의 웹 운영툴 안에서 전체 게임을 관리할 수 있었으면 좋겠다.
백엔드 서버를 게임별로 두지 말고 하나의 프로세스 안에서 여러
게임을 핸들링 했으면 좋겠다.
BAN, KICK 등의 API 를 통일했으면 좋겠다.
플랫폼 화를 해보자
81
/ 99
좋은 말로, “어떤 게임이든 연동 가능하도록 플랫폼 화 되어 있습니다”
나쁜 말로, “찍어내기 가능합니다”
Bootstrap 과 Splunk 를 쓴 장점
82
/ 99
작업 시간 비교
83
최초 개발시 추가 게임 확장시
프론트엔드 개발 약 2개월 1-2일
백엔드 개발 약 2개월 2-3일
/ 99
여러 게임 동시 관리
84
/ 99
보안솔루션이 너무 많은 사람들의 걱정
85
/ 99
DB 팀이 싫어하는 것
86
A시스템도 BAN 만들어
달라고 하고
B 시스템도 BAN
만들어 달라고 하고
님들아 제발 통일좀…
나 보안팀…
여전히 마음만은 송중기
나 DB팀…
/ 99
네트워크팀이 싫어하는 것
87
A시스템도 IP 뚫어
달라고 하고
B 시스템도 IP 뚫어
달라고 하고…
한군데서 좀 하시져~
나 보안팀…
여전히 마음만은 송중기
나 네트워크팀…
/ 99
먼저, 넥슨코리아 게임보안팀의 NGS
88
/ 99
네오플 보안팀의 자체 개발 시스템도 합체
89
/ 99
네트워크/인프라 보안 시스템,
침입탐지시스템 (방화벽, IDS, IPS) 등과도 로그 결합 가능
인증대입공격 (Brute Force) 의 예제
네트워크 보안 로그도 가능할까요?
90
/ 9991
/ 99
어떤 시스템이든 연동가능
92
/ 99
신규 게임 런칭시, 공식 프로세스로 선정
93
“NexonABS 는 넥슨 아메리카 신규 게임 런칭시
반드시 탑재하고 가야 하는 필수 시스템입니다”
신규 개발사에 공식전달하는 문구
/ 99
개발팀을 위한 로그 포맷 가이드 추가
94
/ 99
처음에는 메이플스토리에만 붙히느라
급급했지만
추후에는 타 게임에도 사용할 수 있도록
기능을 API 화 시키고 정밀도도 상승
시간이 지나며 성숙도 상승
95
/ 99
데이터분석 – Investigation Team, DB 팀, 각 게임 개발팀
스플렁크 연동 – DB팀
API 연동 – DevOps 팀
타 시스템 연동 – 넥슨코리아 게임보안팀, 네오플 CERT 팀
운영팀 실태, 프로세스 협의 – Production Team, Investigation Team
많은 팀의 합작으로 가능했던 프로젝트
96
/ 99
유동규 (Sr. Security Engineer from NxA InfoSec Team)
백엔드 개발, 스플렁크 데이터 핸들링, 로그 디자인
프로젝트 참가자 – Thanks for the team !
97
최해길 (Lead Security Engineer from NxA InfoSec Team)
프론트엔드 개발, API 디자인, 시스템 통합 디자인
강병탁 (Sr. Security Manager from NxA InfoSec Team)
전체적인 결정, 프로세스 협의, 잔소리와 매질
/ 99
감사합니다.
Agenda
1. 현업에서 느끼는 현실적인 제약
2. 한계를 극복하기 위한 디자인과 구조
3. 메이플스토리 도입 사례
4. 특정 게임을 넘어서, 타 게임을 위한 플랫폼화

Contenu connexe

Tendances

Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architectureJongwon Kim
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019devCAT Studio, NEXON
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기Sang Heon Lee
 
NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개Seungmo Koo
 
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화Jaeseung Ha
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기Jaeseung Ha
 
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기강 민우
 
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가Seungmo Koo
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현noerror
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013devCAT Studio, NEXON
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀승명 양
 
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출 NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출 정주 김
 
[NDC 2021] 게임 PD가 되어 보니
[NDC 2021] 게임 PD가 되어 보니[NDC 2021] 게임 PD가 되어 보니
[NDC 2021] 게임 PD가 되어 보니Yongha Kim
 
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델Seungmo Koo
 
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCNdc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCHo Gyu Lee
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략YEONG-CHEON YOU
 
송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010devCAT Studio, NEXON
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019devCAT Studio, NEXON
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법Chris Ohk
 
[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들
[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들
[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들강 민우
 

Tendances (20)

Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architecture
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
 
NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개
 
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
 
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
 
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
 
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출 NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
 
[NDC 2021] 게임 PD가 되어 보니
[NDC 2021] 게임 PD가 되어 보니[NDC 2021] 게임 PD가 되어 보니
[NDC 2021] 게임 PD가 되어 보니
 
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
 
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCNdc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABC
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략
 
송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법
 
[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들
[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들
[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들
 

Similaire à 메이플스토리 사례를 통해 살펴보는 서버사이드 봇/핵 탐지 시스템

클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기YoungSu Son
 
애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...
애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...
애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...Kay Kim
 
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)내훈 정
 
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기YoungSu Son
 
김성훈 - 뛰어난 디버거가 되는 방법
김성훈 - 뛰어난 디버거가 되는 방법김성훈 - 뛰어난 디버거가 되는 방법
김성훈 - 뛰어난 디버거가 되는 방법성훈 김
 
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?내훈 정
 
애자일활용사례
애자일활용사례애자일활용사례
애자일활용사례Dexter Jung
 
회사에서 써보는 SQLAlchemy
회사에서 써보는 SQLAlchemy회사에서 써보는 SQLAlchemy
회사에서 써보는 SQLAlchemyJc Kim
 
[224]nsml 상상하는 모든 것이 이루어지는 클라우드 머신러닝 플랫폼
[224]nsml 상상하는 모든 것이 이루어지는 클라우드 머신러닝 플랫폼[224]nsml 상상하는 모든 것이 이루어지는 클라우드 머신러닝 플랫폼
[224]nsml 상상하는 모든 것이 이루어지는 클라우드 머신러닝 플랫폼NAVER D2
 
Image Deep Learning 실무적용
Image Deep Learning 실무적용Image Deep Learning 실무적용
Image Deep Learning 실무적용Youngjae Kim
 
머신러닝 + 주식 삽질기
머신러닝 + 주식 삽질기머신러닝 + 주식 삽질기
머신러닝 + 주식 삽질기HoChul Shin
 
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발동현 김
 
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)NAVER D2
 
[slideshare]k8s.pptx
[slideshare]k8s.pptx[slideshare]k8s.pptx
[slideshare]k8s.pptxssuserb8551e
 
NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점
NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점
NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점Jubok Kim
 
에코노베이션 3차 세미나 교안
에코노베이션 3차 세미나 교안에코노베이션 3차 세미나 교안
에코노베이션 3차 세미나 교안Lee Jungpyo
 
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요NAVER D2
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉iFunFactory Inc.
 
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략Cyworld AppStore (SK Communications)
 
Foss open sorucesw_6902
Foss open sorucesw_6902Foss open sorucesw_6902
Foss open sorucesw_6902승우 백
 

Similaire à 메이플스토리 사례를 통해 살펴보는 서버사이드 봇/핵 탐지 시스템 (20)

클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기
 
애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...
애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...
애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In Th...
 
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
 
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
 
김성훈 - 뛰어난 디버거가 되는 방법
김성훈 - 뛰어난 디버거가 되는 방법김성훈 - 뛰어난 디버거가 되는 방법
김성훈 - 뛰어난 디버거가 되는 방법
 
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
 
애자일활용사례
애자일활용사례애자일활용사례
애자일활용사례
 
회사에서 써보는 SQLAlchemy
회사에서 써보는 SQLAlchemy회사에서 써보는 SQLAlchemy
회사에서 써보는 SQLAlchemy
 
[224]nsml 상상하는 모든 것이 이루어지는 클라우드 머신러닝 플랫폼
[224]nsml 상상하는 모든 것이 이루어지는 클라우드 머신러닝 플랫폼[224]nsml 상상하는 모든 것이 이루어지는 클라우드 머신러닝 플랫폼
[224]nsml 상상하는 모든 것이 이루어지는 클라우드 머신러닝 플랫폼
 
Image Deep Learning 실무적용
Image Deep Learning 실무적용Image Deep Learning 실무적용
Image Deep Learning 실무적용
 
머신러닝 + 주식 삽질기
머신러닝 + 주식 삽질기머신러닝 + 주식 삽질기
머신러닝 + 주식 삽질기
 
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
 
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
[Kerference] 쉽고 빠르게 시작하는 Volatility plugin 개발 - 김동현(BoB)
 
[slideshare]k8s.pptx
[slideshare]k8s.pptx[slideshare]k8s.pptx
[slideshare]k8s.pptx
 
NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점
NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점
NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점
 
에코노베이션 3차 세미나 교안
에코노베이션 3차 세미나 교안에코노베이션 3차 세미나 교안
에코노베이션 3차 세미나 교안
 
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
 
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략
 
Foss open sorucesw_6902
Foss open sorucesw_6902Foss open sorucesw_6902
Foss open sorucesw_6902
 

메이플스토리 사례를 통해 살펴보는 서버사이드 봇/핵 탐지 시스템

  • 1. / 99 메이플스토리 사례를 통해 살펴보는 서버사이드 봇/핵 탐지 시스템 InfoSec Team, 넥슨 아메리카 강병탁 (btkang@nexon.net)
  • 2. / 99 이 세션은 백엔드/프론트엔드 개발에 촛점을 맞춥니다. 운영상 발생하는 프로세스에 촛점을 맞춥니다. 만든 시스템을 실전에서 지속적으로 유지할 수 있는지에 중점을 두었습니다.
  • 3. / 99 Agenda 1. 현업에서 느끼는 현실적인 제약 2. 한계를 극복하기 위한 디자인과 구조 3. 메이플스토리 도입 사례 4. 특정 게임을 넘어서, 타 게임을 위한 플랫폼화
  • 4. / 99 발표자 소개 강병탁 (btkang@nexon.net , window31) -현재 : 넥슨 아메리카 – InfoSec team 팀장 -과거 : 넥슨 코리아 – 게임보안팀 팀장 -월간 마이크로소프트웨어 해킹/보안 칼럼 작가 (2010 ~ 2012) -“리버스 엔지니어링 바이블” 작가
  • 5. / 99 Agenda 1. 현업에서 느끼는 현실적인 제약 2. 한계를 극복하기 위한 디자인과 구조 3. 메이플스토리 도입 사례 4. 특정 게임을 넘어서, 타 게임을 위한 플랫폼화 5
  • 6. / 99 더 설명하기 이젠 지겨우므로 가볍게 스킵… 대한민국 Active-X 와 상황이 비슷 클라이언트 보안의 한계 빈대 잡으려다 초가삼간 다 태운다 해커 정상유저 작살낸다 6
  • 7. / 99 세상이 어느 세상인데 아직도 클라이언트 사이드에서 보안하나요? 우리도 서버 사이드 탐지 시스템 하나 만들죠! 우리도 그정도는 될수있어요! 우리도 서버로 갑시다 7 특전사가 될거라면… 이정도 포스는 보여야 되는거 아닌지…
  • 8. / 99 하지만 정작 현실은… 8
  • 9. / 99 서버 사이드 탐지 시스템은 이상론에 불과한 것인가? (송중기 같은 군인이 현실에 존재하지 않는 이유?) 먼저 문제점을 환기해 보고, 해결 방법을 고민해 보았습니다. 단골로 고민하는 문제 9
  • 11. / 99 일단 로그가 너무 많다.데이터 핸들링 문제 11
  • 12. / 99 그래서 DB Job 이 도는데 보통은 하루에 한번이다. 해커는 핵을 써도 하루 정도는 안전하다 실시간 BAN 문제 12 나, 하루살이! 하루 정도는 살수있지 후훗.
  • 13. / 99 오탐! 자동 BAN 의 신뢰성 문제 13 나 터미네이터는 존 코너를 보호한다. 내가 존 코너야 ㅄ아!
  • 14. / 99 스레시홀드를 바꾸려고 할 때 단지, 10을 5로 바꾸고 싶을 뿐인데! 탐지 기준값 변경이 번거로운 문제 14 그거 바꾸려면 빌드 다시해야 되는데요? 빨라도 다음주에 나갑니다… 이미 3일은 못잔 포스…. 개발자
  • 15. / 99 if (dwDeathCount > 10) { // DoBAN(); } 하드코딩의 악몽 15
  • 16. / 99 그래서 DB 의 SP 로 처리하는 케이스가 많지만 16
  • 17. / 99 역시 피폐한 DBA 들… 17 개발팀이 하던일이 DB팀으로 옮겨갔을 뿐… (운영팀 입장) 또 SP 내용 바꿔달라고요? 지난번엔 10에서 5로 바꿔달라더니 이번엔 5에서 7로… DBA DBA 도 이미 3일은 못잔 포스….
  • 18. / 99 웹 운영툴이 가진 일반적인 문제 18 사용자가 원한 것 개발자가 만들어 준 것
  • 19. / 99 모 게임의 오토밴 시스템 19
  • 21. / 99 하지만, 그걸 본 운영팀의 반응 21
  • 22. / 99 서버사이드 탐지 시스템을 개발할 때 항상 겪는 문제 이것은 개발팀의 일인가? DB팀/데이터분석팀의 일인가? 보안팀의 일인가? 운영팀의 일인가? 누가 개발의 주체가 될 것인가? 22
  • 23. / 99 기술 자체에 너무 몰입하지 말자. 해킹방어는 속도가 생명이다. 일단 속도개선에 중점을 둬보자. 각 팀은 당연히 저마다 가진 사정이 있을 수밖에 없다. 최대한 다양한 팀의 이야기를 들어보자. 누군가 끌어가는 사람 PM 롤이 필요하다 마지막으로, 정작 이것을 사용하는 팀의 입장에서 생각해 보자. 문제점 요약 23
  • 24. / 99 실무 팀과의 형식적인 “회의” 말고 실질적인 “인터뷰”를 거쳐서 그들이 힘든 점이 무엇인지 얻어내는 작업을 먼저 거쳤습니다. 개선하기 위해 24
  • 25. / 99 Agenda 1. 현업에서 느끼는 현실적인 제약 2. 한계를 극복하기 위한 디자인과 구조 3. 메이플스토리 도입 사례 4. 특정 게임을 넘어서, 타 게임을 위한 플랫폼화 25
  • 26. / 99 운영팀이 빡친 이유 26 일일히 데이터를 요청해야하고 값만 하나 바꾸고 싶을 뿐인데 너무 오래 걸려요 나 보안팀… 마음만은 송중기 나 운영팀…
  • 27. / 99 개발/DB팀이 빡친 이유 27 너무 요청이 자주 오고 구조상 시간이 오래 걸릴 수밖에 없는데 이해를 잘 안해줘요 나 보안팀… 마음만은 송중기 나 개발/DB팀…
  • 28. / 99 데이터분석/DB팀이 빡친 이유 28 로그 가져오는데 걸리는 시간이 이루말할 수 없는 고통입니다 나 보안팀… 마음만은 송중기 나 데이터분석/DB팀…
  • 29. / 99 먼저– 로그수집 속도, 분석속도를 높히자 29 - 운영팀이 개발/DB팀에 요청하는 시간 - 개발/DB팀이 로그를 뽑는시간 + 복사하는 시간 - 그걸 다시 운영팀이 다시 복사하는 시간 - 액셀에 넣고 삽질하는 시간
  • 30. / 99 파이썬과 자동화 30 보통 자동화/로그파싱 하면 일단 떠올리는 것은 파이썬
  • 31. / 99 But, 로그 파싱의 악몽 31 이..이제 그만!!!!!
  • 32. / 99 스플렁크를 선택한 이유 32 스플렁크 찬양적인 영업적인 이야기 다 버리고, 순수하게 장점만 언급 1) 로그 수집이 자동으로 된다 (서버에 에이전트 하나만 심으면) 2) 로그 파싱을 알아서 해준다 (파서를 따로 개발할 필요가 없다) 3) 그래프를 매우 쉽게 그릴 수 있다 (웹 대시보드를 개발할 필요가 없다) 즉, 시간절약을 해 준다. 괜한 개발이슈가 생기지 않아서 좋다
  • 33. / 99 Universal Forwarder 33 서버가 몇개가 어디에 있던 로그수집이 실시간으로 된다. 더이상 개발팀/DB팀에 문의하지 않아도 된다.
  • 34. / 99 따라서 이런 로그도 그냥 스플렁크에 넣어버리면, 34
  • 35. / 9935 1시간이면 이런 그래프 제작 가능
  • 38. / 99 그래서 이렇게 그래프도 쉽게 만들었습니다 38
  • 39. / 99 이렇게 해서 나오는 애들은 바로 핵/봇 이예요! 39 index=gpt-ms sourcetype=maplestory:DetectedHack + 블라블라블라~ 링크만 그냥 전달하면 다른 사람도 쉽게 볼 수 있다.
  • 40. / 99 계정 밴을 할 최종 리스트 40
  • 41. / 99 어떤 점이 이득이었는지 41 데이터 수집 로그 파싱 시각화, 그래프화 3개가 해결되었습니다.
  • 42. / 99 하지만 여기서부터 수작업으로 연결되는 문제 42 액셀에서 결과 추출하여 DB 팀에 BAN 날려달라고 요청 또는 운영툴에서 하나씩 복사해가며 부정이용자 블럭 시작
  • 43. / 99 그 과정을 한번 자동화 해봅시다 43 스플렁크 쿼리 입력 부정 사용자 액셀로 추려냄 대량 제재 버튼 클릭 DB 로 BAN 수행 스플렁크 쿼리 자동 입력 NexonABS 백엔드 서버 부정 사용자 메모리에 추려냄 DB 로 BAN SP 호출 10분에 한번 수행
  • 45. / 99 실시간 계정 차단 수행 45 하루살이 해커(24시간 살이 해커) 박멸! 10분마다 핵/봇은 짤려나간다
  • 46. / 99 다음 과제 – 컨트롤 능력을 높히자 46 이 화면이 기억나시나요?
  • 47. / 99 우리도 이제 이렇게 많은 쿼리들이… 47 No Rule 1 index=gpt-ms sourcetype=maplestory:DetectedHack | search "Running Multiple Instances of MapleStory" | rex *********************************>w+)" | stats count AS DetectCount by AID 2 index=gpt-ms sourcetype=maplestory:DetectedHack | search "Illegal ExclRequestTime" | stats count as DetectCount by AID 3 index=gpt-ms AND sourcetype="maplestory:Macro" AND "Invalid User Action Position - Type:0" | stats count(ACCOUNTID) *********************************, WORLD, DetectCount | sort – DetectCount 4 index=gpt-ms sourcetype=maplestory:Macro "WARP - Illegal UserWarp Tried"| stats *********************************, WORLD, DetectCount | sort - DetectCount 40 index=gpt-ms AND sourcetype="maplestory:Macro" AND "Invalid User Action Position - Type:0" | stats count(ACCOUNTID) *********************************, WORLD, DetectCount | sort – DetectCount 41 index=gpt-ms sourcetype=maplestory:Macro "WARP - Illegal UserWarp Tried"| stats *********************************, WORLD, DetectCount | sort - DetectCount ………………..
  • 48. / 99 우리도 웹 운영툴 하나 만듭시다 48 오픈소스, Bootstrap, SB Admin 2 빠른 시간 내에 웹 프론트엔드 개발을 할 수 있음 요즘 대세인 웹 프레임워크 역시 목표는 시간절약!
  • 49. / 99 웹 운영툴 (SOC) 49
  • 50. / 99 이 페이지 기억하시나요? 50 이런 일이 발생하는 이유는?
  • 51. / 99 다시한번 실제 운영하는 쪽과 인터뷰를, 51 우린 블럭작업 할때 이르케 이르케 해여~ 요런 요런 순서대로 해요 그게 몸에 익었거든요 나 보안팀… 마음만은 송중기 나 운영팀…
  • 52. / 99 즉, 현재의 프로세스를 그대로 운영툴에 반영하자 52 스플렁크에서 데이터 조회 타 서버로그에서 더블 체크 최종 쿼리 뽑아냄 요 스플렁크 쿼리를 던져서 나오는 애들은 BAN 시켜도 됩니다
  • 56. / 9956 자, 이제서야 컨트롤이 되는군요! A조건으로 차단 B조건으로 차단 C조건으로 차단 D조건으로 차단 개발팀 재빌드나 DB 팀 SP 수정 없이 차단 수위를 조절할 수 있게 되었습니다!
  • 57. / 99 다음 고민, 누가 운영의 주체가 될 것인가? 57 이 페이지 기억나시는지요?
  • 58. / 99 그럼 이제 누가 사용할래? 유지보수는 어떻게 하지? 이것은 개발팀의 일인가? DB팀/데이터분석팀의 일인가? 보안팀의 일인가? 운영팀의 일인가? 다시 그 질문으로 돌아오게 됩니다 58
  • 59. / 99 오진이 발생하는 것을 보면 점점 귀찮고 짜증이 나게 됨 하다보면 좀더 정밀한 검토를 필요로 하게 되는 로그가 꼭 튀어나옴 하지만 고쳐도 고쳐도 끝이 없음, 결국 하게되는 말은, “자동밴 버튼 누르기 전에 운영팀에서 더블체크 꼭 해보세요~” 결국 운영팀은… 개발하고 나면 꼭 생기는 문제 59
  • 60. / 99 결국 운영팀은 버튼을 누르지 않음 60 Auto-BAN 정말 눌러도 되는 걸까? ?!!
  • 61. / 99 이것이 바로 시스템이 방치되는 이유 61 오탐이 많아서 못 쓰겠어요 고치기도 힘든것 같고 그냥 안써요 나 보안팀… 여전히 마음만은 송중기 나 운영팀…
  • 62. / 99 그래서 다시한번 조사했습니다. 62 수동으로 BAN 날리시기 전에 뭐뭐 체크하세요? 뭘 체크해야 믿고 BAN 날리나요? 나 보안팀… 여전히 마음만은 송중기 나 운영팀…
  • 63. / 99 운영팀이 하는 체크로직들. 이정도 체크가 되면 운영팀은 안심하고 BAN 을 날릴 수 있다. 리스트를 뽑았으니, 63
  • 64. / 99 그럼 그것도 자동화를 해보죠 64 스플렁크 쿼리 입력 부정 사용자 액셀로 추려냄 대량 제재 버튼 클릭 DB 로 BAN 수행 스플렁크 쿼리 자동 입력 NexonABS 백엔드 서버 10분 루프 부정 사용자 메모리에 추려냄 DB 로 BAN SP 호출 FILTER 화이트리스트 필터링 기능 추가
  • 65. / 99 그리고 화이트리스트 룰은 운영팀이 만드세요 65 . .
  • 66. / 99 개발팀 : 소스코드에 하드코딩된거 고치기 싫어!누가 웹 운영툴좀 만들어줘! DB/데이터분석팀 : 데이터 수집하는 시간과 분석하는 시간 단축해줘! 운영팀 : 우리가 직접 룰조정 할 수 있게 해줘! 오진을 없애줘! 보안팀 : 나도 뭔가 할 수 있게 해줘! 니넨 하는 일이 뭐야? 라는 말 듣기싫어! 각 팀이 가진 불만들을 일단 해결 66
  • 67. / 99 Agenda 1. 현업에서 느끼는 현실적인 제약 2. 한계를 극복하기 위한 디자인과 구조 3. 메이플스토리 도입 사례 4. 특정 게임을 넘어서, 타 게임을 위한 플랫폼화 67
  • 68. / 99 • 넥슨 아메리카 최장수 게임 • 봇들과 핵이 많은 상태, 3rd party 보안회사의 클라이언트 사이드의 보안시스템은 효과가 거의 없던 상태 • 이미 현존하는 많은 게임서버 로그가 있었지만 활용도가 낮았던 상태 • 로그 파싱의 고통이 있던 상태 • 자동 밴 오진이 있었던 상태 • 게임 경제가 매우 좋지 않았던 상태 Prebuild 68
  • 69. / 99 NexonABS 도입 진행 69 프론트엔드, 백엔드 개발 시간이 최초엔 어느 정도 소요되었음 (총 3개월) 미국법인에서 NexonABS 를 붙히게 된 최초의 게임 현재 총 53개의 룰이 있고, 유동적으로 on/off 진행중
  • 70. / 99 운영팀의 빠른 솔로 플레이가 가능해짐 70 새로운 룰 작성 : 직접 처리 스레시홀드 조정 : 직접 처리 BAN 결정 : 직접 처리 롤백 : 직접 처리 개발팀과 DB 팀도 시간적 여유가 생김
  • 71. / 99 Example 71 ABS Rule 51: MVAC (Monster Vac) Description: Rule designed to detect illegal forced monster movements (a.k.a. "monster vac" or "mvac"). Rule Basis: Detection of log: “MobFlashFast - Mob Velocity suddenly changed” in “DetectedHack” log file. Test Log Start: 2/10 Detection Criteria: 100 detections per 10 minutes. Total Detections: 3,433 Unique Accounts: 207 Spot check results: Excellent. Very Low to Zero false positives.
  • 72. / 99 운영팀 스스로 제안 가능 72 “ 3번 룰에 대해 운영팀 내에서 탐지 감도를 여러 차례 바꿔가며 1주일간 로깅 상태로 지켜봤습니다. 이대로 자동BAN으로 전환해도 괜찮을 것 같습니다. 찬성하시는지요? ”
  • 73. / 99 빠르고 간편한 만장일치 프로세스 73 마케팅팀 개발팀 보안팀
  • 74. / 99 유연한 정책 74 In-Game 이벤트 때는 운영팀 스스로 OFF 가능 때로는 마케팅 팀에서 잠시 BAN 을 멈추자고 제안할때도 즉시 처리 가능
  • 75. / 99 한참 피크 때에 하루 최고 BAN 횟수 75 OVER 10,000
  • 76. / 99 고객센터 오탐관련 불만 티켓 접수건 76 ZERO
  • 77. / 99 안정되고 있는 게임 경제 77
  • 78. / 99 메이플스토리 공식 보안 프로덕트로 인정받음 78 물론 이런 상을 받은건 아닙니다…
  • 79. / 99 Agenda 1. 현업에서 느끼는 현실적인 제약 2. 한계를 극복하기 위한 디자인과 구조 3. 메이플스토리 도입 사례 4. 특정 게임을 넘어서, 타 게임을 위한 플랫폼화 79
  • 80. / 99 “로그 파싱하려면 또 …………” “운영툴 또 만드려면 …………” “게임마다 특성이 달라서…………” 결론 : “시간을 많이주면 가능합니다만, 현재는 어쨌든 불가능합니다” 사람들이 싫어하는 발언 : 아쉽지만 저희 게임 전용입니다 80
  • 81. / 99 하나의 웹 운영툴 안에서 전체 게임을 관리할 수 있었으면 좋겠다. 백엔드 서버를 게임별로 두지 말고 하나의 프로세스 안에서 여러 게임을 핸들링 했으면 좋겠다. BAN, KICK 등의 API 를 통일했으면 좋겠다. 플랫폼 화를 해보자 81
  • 82. / 99 좋은 말로, “어떤 게임이든 연동 가능하도록 플랫폼 화 되어 있습니다” 나쁜 말로, “찍어내기 가능합니다” Bootstrap 과 Splunk 를 쓴 장점 82
  • 83. / 99 작업 시간 비교 83 최초 개발시 추가 게임 확장시 프론트엔드 개발 약 2개월 1-2일 백엔드 개발 약 2개월 2-3일
  • 84. / 99 여러 게임 동시 관리 84
  • 85. / 99 보안솔루션이 너무 많은 사람들의 걱정 85
  • 86. / 99 DB 팀이 싫어하는 것 86 A시스템도 BAN 만들어 달라고 하고 B 시스템도 BAN 만들어 달라고 하고 님들아 제발 통일좀… 나 보안팀… 여전히 마음만은 송중기 나 DB팀…
  • 87. / 99 네트워크팀이 싫어하는 것 87 A시스템도 IP 뚫어 달라고 하고 B 시스템도 IP 뚫어 달라고 하고… 한군데서 좀 하시져~ 나 보안팀… 여전히 마음만은 송중기 나 네트워크팀…
  • 88. / 99 먼저, 넥슨코리아 게임보안팀의 NGS 88
  • 89. / 99 네오플 보안팀의 자체 개발 시스템도 합체 89
  • 90. / 99 네트워크/인프라 보안 시스템, 침입탐지시스템 (방화벽, IDS, IPS) 등과도 로그 결합 가능 인증대입공격 (Brute Force) 의 예제 네트워크 보안 로그도 가능할까요? 90
  • 92. / 99 어떤 시스템이든 연동가능 92
  • 93. / 99 신규 게임 런칭시, 공식 프로세스로 선정 93 “NexonABS 는 넥슨 아메리카 신규 게임 런칭시 반드시 탑재하고 가야 하는 필수 시스템입니다” 신규 개발사에 공식전달하는 문구
  • 94. / 99 개발팀을 위한 로그 포맷 가이드 추가 94
  • 95. / 99 처음에는 메이플스토리에만 붙히느라 급급했지만 추후에는 타 게임에도 사용할 수 있도록 기능을 API 화 시키고 정밀도도 상승 시간이 지나며 성숙도 상승 95
  • 96. / 99 데이터분석 – Investigation Team, DB 팀, 각 게임 개발팀 스플렁크 연동 – DB팀 API 연동 – DevOps 팀 타 시스템 연동 – 넥슨코리아 게임보안팀, 네오플 CERT 팀 운영팀 실태, 프로세스 협의 – Production Team, Investigation Team 많은 팀의 합작으로 가능했던 프로젝트 96
  • 97. / 99 유동규 (Sr. Security Engineer from NxA InfoSec Team) 백엔드 개발, 스플렁크 데이터 핸들링, 로그 디자인 프로젝트 참가자 – Thanks for the team ! 97 최해길 (Lead Security Engineer from NxA InfoSec Team) 프론트엔드 개발, API 디자인, 시스템 통합 디자인 강병탁 (Sr. Security Manager from NxA InfoSec Team) 전체적인 결정, 프로세스 협의, 잔소리와 매질
  • 98. / 99 감사합니다. Agenda 1. 현업에서 느끼는 현실적인 제약 2. 한계를 극복하기 위한 디자인과 구조 3. 메이플스토리 도입 사례 4. 특정 게임을 넘어서, 타 게임을 위한 플랫폼화