2021년 8월 13일, 드디어 BECKS KR이 온라인으로 열렸습니다.

LINE Plus Graylab과 Developer Relations 팀에서 준비해 주셨고, LINE을 비롯한 여러 회사에서 참여한 발표자분들이 훌륭한 내용을 공유해 주셨습니다. 회의가 많았던 날이라 발표를 다 듣진 못했지만 중간중간 들은 내용에 대한 소감을 간단히 정리해 봤습니다. 아래 적은 내용의 상당 부분은 발표자가 언급한 내용이 아니라 제 개인적인 생각입니다.
발표 영상은 라인개발실록 영상에서 만나보실 수 있으며, 아래 글의 각 세션 제목을 클릭하면 영상의 해당 세션 발표 부분으로 이동합니다.
LINE CTF Writeup - 임준오 님(Theori)

임준오 님은 몇 달 전 PancakeSwap의 로터리 컨트랙트(lottery contract)에서 취약점을 발견하고 $70,000 + $3,500의 바운티를 타낸 분입니다(참고). Ethereum 버그 바운티에서도 현재 20,500 포인트로 4위에 랭크돼 있습니다(참고). 또한 블록체인 환경에서뿐만 아니라 Chrome과 같은 다른 여러 소프트웨어에서도 다양한 취약점을 발견한 전적이 있습니다. 최근 보안계에서 아주 핫한 인물이라고 할 수 있습니다. LINE은 지난 2021년 3월에 총 상금 $10,000 규모의 CTF(Capture The Flag, 해킹 방어 대회)를 진행했는데요. 대회에 참가하셨던 준오 님은 이때 출제된 문제들에 대해서도 발표를 진행해 주셨습니다. 총 세 문제를 소개해 주셨는데 각 문제에 대해 잘 배울 수 있는 시간이었습니다. 준오 님이 여러 CTF에서 꽤나 강력하게 활약했다는 것을 이미 알고 있었습니다. 문제에 접근하는 방법을 들어보니 역시나 기본기가 탄탄하고 분석 능력이 뛰어나다는 것을 알 수 있었습니다. 특히, 시간 제약이 있는 대회의 특성상 빠른 문제 해결 능력이 중요한데 이 부분이 아주 돋보였습니다. 발표를 통해 포너블(pwnable)1, 샌드박스 탈출(sandbox escape)2, 크립토(crypto)3 관련 트렌드를 알 수 있었습니다. 대회 중 겪은 비하인드 스토리도 들려주었는데요. 들어보니 활약이 대단한 친구들이 있었습니다. 앞으로의 장래가 아주 기대되고 궁금합니다. 앞으로 좋은 모습 많이 보여주길 바라는 마음입니다.
준오 님은 발표 중간에 'CTF는 실전이냐, 아니냐'에 대한 업계 논쟁에 대해서도 잠깐 언급했습니다. 이런 논쟁은 20년 전부터 계속 회자되는 이야기인데 개인적으로 큰 의미 없는 이야기라고 생각합니다. CTF만 잘 하는 친구도 있고, 실전만 잘 하는 친구도 있고, 둘 다 잘 하는 친구도 있기 때문입니다. 각 그룹의 숫자는 이제 손가락으로 셀 수 있는 규모가 아니기 때문에 결국 사람에 따라 다른 것이지 CTF가 업계 실력을 가늠하는 평가 기준이 될 수는 없다고 생각합니다.
보안 기술을 학습할 수 있는 방법에는 여러 가지가 있는데 그중에서 CTF 참가는 아주 좋은 방법 중 하나입니다. 단, 게싱(guessing) 같은 게 필요하지 않고 소프트웨어를 잘 이해하고 있어야만 풀 수 있는 양질의 문제로 구성된 대회 위주로 참가하는 것이 좋습니다. 또한 라이트업(writeup)을 참고해 다른 사람의 풀이는 어땠는지 알아보는 것도 중요하지만 가급적이면 스스로 먼저 답을 알아내기 위해 노력하는 것이 필요합니다. 설사 며칠이 걸리더라도 답을 알아내는 과정을 반복하면서 쌓아가는 경험이 필수라고 할 수 있겠습니다.
Hitchhiker's guide to the CTI - 곽경주 님(S2W)

S2W에서 이사로 재직 중인 곽경주 님은 TI(threat intelligence) 관련 주제로 여러 컨퍼런스에서 발표한 경험이 있습니다. TI가 무엇인지 잘 와닿지 않는 분들은 크라우드스트라이크에서 소개한 내용을 보면 전반적인 개념을 알 수 있습니다(참고). 곽경주 님은 CTI(Cyber Threat Intelligence, 사이버 위협 인텔리전스) 체계의 구체적인 내용, 그리고 위협 정보를 취급하는 회사에서 일하면서 겪은 현장 경험에 대해서 발표해 주었습니다. TI 분야에 대해 대략적으로는 알고 있지만 자세히는 잘 몰랐던 분들에게는 큰 도움이 되는 내용이었습니다.
TI에는 많은 분야가 있지만 일반적으로 다크 웹이 떠오릅니다. 사실 다크 웹 데이터를 수집하는 것 자체만 놓고 보면 90년대 후반 크롤링으로 인터넷에서 데이터를 가져오는 수준이랑 크게 다르지 않다고 생각합니다. 개인적으로 다크 웹을 분석할 때 세 가지가 중요하다고 생각합니다. 일반적으로 접근하기 힘든 포럼에서 양질의 데이터를 확보하는 것과 확보한 대용량의 데이터를 정제할 수 있는 기술, 그리고 이를 활용할 수 있는 프로세스를 정립하는 것입니다. TI 회사들이 많아지고 있기 때문에 자연스럽게 생태계가 발전할 것이라고 기대하고 있으며, 보안 담당자 입장에서 기대가 되는 산업입니다.
개인적인 생각이지만, TI는 사이버 범죄자들의 타겟이 될 수 있기 때문에 TI 비즈니스를 하는 회사와 소속 연구자에게 꽤나 위험한 업무인 것 같습니다. 실제로 해커가 TI 분석가의 개인 온라인 계정을 해킹하는 일이 발생하기도 했고(참고), 몇몇 TI 리서처들이 실제로 위협을 받은 경험이 있다고 얘기한 적도 있습니다. TI 회사들은 스스로를 보호하기 위해서라도 OPSEC(Operations Security, 운영 보안)을 철저히 해야겠다는 생각이 들었습니다. 위험수당이라도 지급해야 하는 것 아닐까요?
발표 내용 중에 특정 악성 도메인 테이크다운4에 관한 얘기가 나왔습니다. 공격자들은 도메인을 일시적으로 사용하기 때문에 사실 테이크다운이 큰 의미는 없지만, 그래도 가끔 필요한 경우가 있습니다. 해외 사이트일 경우 협조 요청이 이뤄지기까지 상당한 시간이 걸릴 수 있는데요. 그런 경우에는 로컬에서만이라도 접속하지 못하게 조치하는 것도 도움이 됩니다. 발표 후 Q&A 시간에서 다른 참가자분께서 KISA에서 대략 30분 정도 만에 처리해 준다고 해서 반가웠습니다. 역시 스피드의 한국입니다.
최신 CPU side-channel 공격과 방어 - 장영진 님(Oregon State Univ)

장영진 님은 데프콘 CTF에서 우승한 경험이 있고 KAIST GoN에서 상당히 오랫동안 활동했습니다. 현재는 미국 오리건 주립 대학교에서 해킹을 가르치는 교수로 학생들에게 아주 좋은 평가를 받고 있습니다(참고). 영진 님 발표 시간에 업무 회의가 잡혀 있어서 내용을 많이 듣지는 못했지만, 기술적인 내용을 친절한 옆집 엔지니어 아저씨가 가르쳐 주듯 알려주셨습니다.
영진 님은 CPU side-channel 공격 원리를 기초부터 쉽게 설명하셨고, 멜트다운(Meltdown)과 스펙터(spectre) 등을 예시로 들었습니다. Side-channel 공격은 주요 키와 같은 정보를 추출하기 위해서 사용하는 경우가 많은데요. 개인적으로 최근에는 'Lord of the Ring(s): Side Channel Attacks on the CPU On-Chip Ring Interconnect Are Practical'라는 연구가 흥미로웠습니다(코드도 있습니다). 깊게 이해한 것은 아니지만, 링 버스(ring bus) 프로토콜을 분석하고 특정 액션에 대한 여러 아웃풋 값들을 정제해서 노출돼서는 안 되는 민감 정보들을 추출하는 내용입니다. 연구자들이 분석한 내용을 기반으로 다양한 응용 방법이 탄생할 것 같습니다.
Side-channel 공격은 항상 관심이 있었지만 실제로는 한 번도 해 보지 못한 분야라 논문을 읽으면 뭔가 막연하다는 느낌이 있었습니다. 게다가 하드웨어 장비가 필요한 해킹처럼 성실함이 요구되는 분야는 도전해 볼 엄두가 안 나기도 합니다. 딥러닝을 이용한 side-channel 공격도 있는데요(참고). 아무튼, 이런 공격들은 어디에 쓰일까요? 다양한 사례가 있지만 전문가가 아닌 분들에게 일반적으로 가장 와닿는 사례는 비트코인 하드웨어 지갑에서 중요한 데이터를 빼내는 것입니다(참고).
Becks가 끝난 후 영진 님의 리서치 약력이 궁금해서 찾아봤는데 매우 다양한 분야를 연구하고 계셨습니다(참고). 예전에 영진 님과 교육에 대해서 얘기한 적이 있습니다. 학생들을 케어하는 방식이 매우 친절하다는 것을 느낄 수 있었습니다. 실력이 좋더라도 가르치는 것은 잘 못하는 사람도 많은데 보통 학생이 당연히 알 것이라 생각하고 생략하면서 넘어가거나, 학생들의 지적 수준이 가르치는 사람과 맞지 않아서 그런데요. 만약 영진 님의 랩실에서 공부했다면 재밌게 잘 배웠을 것 같습니다.
tl;dr - 신종호 님(LINE플러스)

LINE Plus에서 Security R&D 팀의 매니저를 맡고 계시는 신종호 님입니다. NLP를 이용해서 버그 헌팅을 하는 방법에 대해서 발표했습니다. 보통 머신 러닝이라고 하면 방대한 데이터를 이용해서 결과물을 만드는 게 일반적인데요. 이 발표에서는 데이터가 적은 환경에서 NLP with ML을 이용해 취약점을 발견하는 내용을 공유했습니다.
세상에는 수많은 CVE(Common Vulnerabilities and Exposures, 공개적으로 알려진 취약점)가 있지만 그럼에도 취약점 관련 샘플을 수집하는 것은 쉽지가 않습니다. 일단 PoC(Proof of Concept)도 없는 경우가 부지기수고, 실제 어떤 코드에서 문제가 발생하는 건지 파악하는 것에도 많은 시간이 들어갑니다. 또 요즘엔 2000년 대처럼 memcpy()
함수 하나 때문에 버그가 발생하는 게 아니라 여러 문제의 조합으로 발생되는 경우가 대부분이기 때문에 샘플을 많이 모으는 것이 대단히 어렵습니다. 이와 같이 수집할 수 있는 데이터 셋에 한계가 있는 환경에서의 현실적인 문제를 고민한 연구인 것 같습니다.
요즘 Machine learning for offensive security와 관련된 연구들이 지속적으로 나오고 있습니다. 바람직한 방향으로 보입니다. 머신러닝은 결국 IT에 종사하는 사람이라면 누구나 할 수 밖에 없다고 생각합니다. 코어 리서치를 말하는 것이 아니라, ML의 방법론 등을 이용해서 각자 분야의 노하우를 담아 응용하는 것이 필요한 것 같습니다. 보안 분야에서 ML은 공격보다 방어 분야에서 더 어렵다고 생각합니다. 데이터를 많이 취급할 수 있는 기업에서도 보안 팀은 많은 고민을 할 수밖에 없습니다. 어느 정도 규모 이상의 IT 기업들은 로그를 잘 저장하고 있는 편이지만 ML을 이용해서 보안을 하려면 데이터를 다시 정제해야 합니다. 정제를 잘 해서 프로세싱한다고 해도 'false positive'의 두려움 때문에 즉각적인 보안 조치를 하기도 어렵고, 결국 모니터링 및 사후 조치 수준 이상의 액션을 취하는 것은 난감한 일입니다.
이쯤에서 저희 조직을 홍보합니다. LINE Plus Security R&D 팀에서는 퍼징과 ML 등을 이용해 연구하고 있습니다. 연구한 내용들은 회사의 보안 강화를 위해 사용되기 때문에 실무와 결합된 리서치를 하고 싶은 분들에게 추천드립니다.
실전 보이스피싱 대응하기 - 장민창 님(금융보안원)

마지막은 장민창 님의 보이스피싱 발표입니다. 보안 분야에 있는 사람이라면 보이스피싱이 국가적으로 엄청난 피해를 입히고 있다는 것을 알고 있을 것입니다(참고). 이 발표에서는 보이스피싱의 역사와 현재 어떤 형태로 진행됐는지 소개했습니다. 이제 보이스피싱은 단순 사기가 아니라 강력한 기능으로 무장한 백도어를 이용한 종합 감시 툴이 돼버렸습니다.
피싱은 '바보같이 도대체 누가 보이스 피싱 공격에 당하는 거야?'라고 생각하는 사람이 당한다고 합니다. 금전적인 이득을 직접 취득할 수 있기 때문에 공격자들의 수법이 계속 진화하고 있는데요. 배포 유형도 단순 SMS를 통한 전파뿐 아니라 변조된 게임 앱 등의 형태로 다양해지고 있습니다. 앞으로도 악성 앱 전파 방법 자체는 크게 변화가 없겠지만, 악성 앱이 진화하면서 공격자의 갈취 수단이 다양해질 수 있다는 게 걱정됩니다. 예를 들어, 설치된 악성 앱은 스파이웨어와 마찬가지로 많은 기능을 제공하는데요. 수만 대의 피해자 기기에서 미디어 파일을 자동으로 분석해 피부색과 관련된 데이터를 보유한 기기를 더 집중적으로 협박할 수도 있고, 메신저의 컨텍스트를 분석해서 공격할 수도 있습니다.
향후엔 기업을 타겟으로 한 랜섬웨어 공격자들도 이쪽으로 몰려올 가능성이 있습니다. 특히 한국은 업무용과 개인용 휴대폰을 분리하지 않는 경우가 많아서 대규모 피싱 공격을 통한 기업 인프라 침투도 공격 범위에 포함될 수 있습니다. 앞으로 ML과 같은 기술에 접근하는 것이 더 쉬워질 것이기 때문에 공격자들도 이를 이용해서 보다 세밀하게 타겟팅해서 공격을 수행할 수 있을 것입니다. 즉, 대규모 공격과 타겟형 공격의 구분이 모호해질 수 있으며, 공급망 공격(supply chain attack)과 비슷한 형태로 기업에 보안 위협을 가할 수 있습니다.
발표에서는 보이스 피싱 피해를 줄이기 위해 현업에서 어떤 노력들을 하고 있는지 자세히 설명했습니다. 각 집단 별로 이해관계가 다르고, 그에 따라 보안을 위해 취할 수 있는 액션의 종류도 달라집니다. 결국, 어느 한 집단에서 혼자 할 수 있는 일에는 한계가 있으며 긴밀한 협업이 필요한 분야라 생각합니다. 이런 방식의 공격은 결국 사후 대처가 대부분이라 피해를 0으로 만드는 것은 어렵지만 규모를 크게 줄이는 것은 가능할 것 같습니다.
마치며
BECKS KR #1 발표 동영상은 여기에서 볼 수 있습니다. 현재 BECKS KR #2 일정을 조율하고 있습니다. 혹시 LINE과 함께 조인트 형태로 BECKS와 같은 이벤트를 진행하고 싶은 회사가 있다면 LINE Developer Relations 팀(dl_devrelations_kr@linecorp.com)이나 저(s.j.lee@linecorp.com)에게 연락 부탁드리겠습니다.
- 포너블(pwnable): C나 C++와 같은 네이티브 언어로 프로그램을 작성할 때 메모리 처리에 주의하지 않으면 보안 관점에서 문제가 되는 버그들이 발생할 수 있습니다. 다양한 유형의 버그가 발생할 수 있지만 주로 메모리 오염(corruption)이 원인이 되는데요. 이를 악용해 공격자가 프로그램의 흐름을 원하는 대로 조작해 허가되지 않은 행위를 할 수 있습니다. 이런 종류의 문제를 '포너블'이라고 부릅니다. 일반적으로 해킹 대회에서 가장 많이 출제되는 카테고리 중 하나입니다.
- 샌드박스 탈출(sandbox escape): 요즘의 운영체제나 프로그램은 사용자에게 보다 안전한 환경을 제공하기 위해 샌드박스 형태로 프로그램을 구동하는 경우가 많습니다. 대표적인 예로 도커가 있고, 우리가 일반적으로 사용하는 웹 브라우저에도 샌드박스가 구현돼 있습니다. 샌드박스 안은 권한이 제약돼 있어서 공격자가 공격에 성공하더라도 많은 일을 할 수가 없습니다. 첫 번째 공격에 성공해 샌드박스 내에 안착하더라도 더 많은 권한을 얻기 위해서는 샌드박스를 탈출할 수 있는 또 다른 취약점이 필요하기 때문에 공격자의 노력이 더욱 많이 필요합니다.
- 크립토(crypto): 암호는 범용적으로 사용하기 때문에 한 마디로 표현하기는 어렵지만, CTF에서의 암호학 문제는 특정 암호 방식으로 구현된 문제를 참가자에게 제시하는 형태입니다. 커스터마이징한 암호 알고리즘일 수도 있고, 널리 쓰이는 암호 알고리즘일 수도 있습니다. 제작자는 문제를 구현할 때 의도적으로 취약점을 만들고, 참가자는 이를 알아내서 풀어야 합니다. 경우에 따라 수학적인 지식이 필요할 수도 있지만, 실제 암호 관련 취약점은 구현 레벨에서 발생하는 경우도 많기 때문에 프로토콜을 이해하고 있다면 고도의 수학적 지식이 없더라도 해결할 수 있는 경우가 많습니다.
- 도메인 테이크다운(takedown): 일반 사용자가 악성 도메인에 접근하지 못하도록 막는 조치입니다. 각 나라의 관계 기관들과 협업해 진행합니다.