목록보안 기술/ETC (12)
앵하니의 더 나은 보안
취약점 진단 대상 시스템에서 취약점 도출이 안돼서 뭐라도 잡아내려 MFA의 OTP를 딥러닝을 통해 학습시켜OTP 발급 신청에 따른 OTP 결과 값 예측이 가능한지 확인해보려 했다. 결과적으로는 실패했지만 그 과정을 한번 살펴보자. 학습시킬 샘플 OTP 값을 뽑아내기 위한 수집/분석 요소로는 아이디와 OTP 발급 신청에 따른 서버 응답 시간을 택했다. 먼저 아래는 OTP 요청 아이디와 응답 패킷 내 존재하는 서버 시간을 추출해 파일로 저장하는 소스코드다.해당 시스템에서는 OTP를 5분단위로 전송이 가능해time.sleep(301)을 통해 5분 1초 간격으로 OTP 요청 및 수집을 반복시켰다.import requestsfrom datetime import datetimeimport timedef conver..
3월 말에 터져버렸던 xz utils backdoor에 대해 기술적으로 자세히 알아보자 XZ Utils Backdoor의 감염 및 명령 수행 과정잘 정리해놓은 그림을 보면서 설명하겠다.xz 라이브러리가 빌드될 때 xz 패키지에 있던 m4 macro가 실행되는데, 이때 아래 명령이 수행됨변조 대상은 tests/files/bad-3-corrupt_lzma2.xz이고 이 파일의 바이너리 데이터가각각 아래 규칙에 의해 변조됨0x09(\t) > 0x200x20 > 0x090x2d(-) > 0x5f0x5f(_) > 0x2d그럼 변조된 bad-3-corrupt_lzma2.xz가 bash 스크립트로 디코딩되고 해당 스크립트를 통해 또 다시 tests/files/good-large_compressed.lzma 파일을 악..
RCE를 수행하는 CVE들을 정리할 기회가 생겨 log4shell 원리에 대해 정리해보려 한다.우선 log4shell은 log4j2를 사용한 로깅 모듈에서 발생한 제로데이 취약점이다. log4j2에 뭐가 있었길래 RCE라는 어마어마한 취약점이 발생한걸까?그 답은 JNDI에 있다. log4j2에서는 JNDI를 이용해 자동으로 디렉터리 서비스에 접근,이름으로 변환하거나 자바 객체를 다운받는 기능을 제공했다.그리고 그 과정에서 유효성 검증이 진행되지 않아 취약점이 발생했다. 한마디로 JNDI 인젝션 때문이라 할 수 있겠다.JNDI란 클라이언트가 이름을 통해서 데이터와 개체를 검색하고 조회할 수 있도록 하는 Java API이다.자바에서 다른 디렉터리 서비스 RMI(Remote Method),CORBRA(Comm..
reversing.kr의 제일 첫문제 Easy_CrackMe를 한번 풀이해보자. 목적 Easy_CrackMe.exe 실행 시 텍스트박스와 확인 버튼이 있는 다이얼로그가 나타난다. 임의의 값 입력 후 확인 클릭 시 “Incorrect Password” 메시지가 표시된다. 적절한 값을 찾아 넣어 Incorrect Password가 아니라 다른 메시지를 출력시켜야 하는것으로 보이니, 정적분석/동적분석을 통해 적절한 값을 획득해보자. 정적분석 정적분석을 위해 ghidra로 Easy_CrackMe.exe 파일 분석을 수행한다. 우선 텍스트필드에 입력한 값에 대한 분기점을 찾기 위해 임의의 값을 입력했을 때 표시된 “Incorrect Password” 문자열을 검색, 접근한다. 그리고 해당 문자열을 사용하는 FUN..