본문 바로가기

전체 글15

[정보보호솔루션] WAF를 활용한 사내 시스템 외부 접속 허용 한동안 블로그 글을 작성하지 않다가 문득 써야겠다 생각이 들어서 소재를 찾던 중... 최근에 고객사 보안 이슈 때문에 WAF 작업을 한 적이 있다. 아직까지 해결 못한 이슈지만, 업무를 수행하면서 배웠던 것, 느꼈던 것들을 적어보려고 한다. 이슈 내용은 고객사에서 우리 회사 모든 프로그램을 다 빼라고 한다... 그 프로그램 중에 S/W VPN도 포함되어 있다... 그러면 우리 회사 직원은 어떻게 업무를 보란말인가? (우리 회사 직원이 고객사 근무지에 파견 나가 근무하는 형태이다. 고객사는 대기업 S사... 보안이 무쟈게 철저하다.) 그렇기에 어쩔 수 없이 우리 내부 시스템(그룹웨어, 타 업무 시스템 등)을 외부에 오픈해 줘야 하는 상황... 외부에 오픈하게 되면 누구나 우리 시스템을 이용할 수 있게 되므.. 2024. 4. 11.
[어플리케이션] C# PreparedStatement 를 활용하여 SQL Injection 조치하기 여느 때처럼 ISMS 취약점 조치를 위해 열심히 일하던 중... 한 개발자분께서 SQL Injection 조치가 어렵다고 연락 왔다. 항상 느끼는 것이지만 개발자들은 일이 많아서 보안 쪽에서 주는 업무를 버거워한다. 사실 그 업무가 힘든 것이 아니더라도.. 개발자와 현업담당자와 협의하는 것. 보안담당자가 평생 해결해야 할 숙제이다. SQL Injection 취약점의 경우, 사용자로부터 받는 입력값에 PreparedStatement을 적용하여 해결해야 하는데 이번 건의 경우 프로젝트의 소스코드를 꽤 변경해야 하는 작업이었다. (그래서 개발자가 컨설턴트 쪽에 해달라고 뗑깡 부림ㄱ-) 사실 우리 회사 프로젝트(소스코드)를 외부에 공개하는 것도 그렇고 그 프로젝트의 구조를 컨설턴트로 하여금 분석시키는 것도 말이.. 2023. 11. 16.
[악성코드 분석]#4 어셈블리어와 디스어셈블리 - part(3/3) 이 글의 모든 내용은 책 '악성코드 분석 시작하기'를 스스로 공부하며 정리한 내용임을 밝힙니다. 함수 1. 함수의 구성 프로그래밍 언어를 배워본 사람이라면 누구나 알겠지만, 함수는 다음과 같이 구성되어 있다. ● 함수명: 함수의 이름이자 함수 코드의 시작 주소를 나타낸다. ● 매개변수: 함수가 호출될 때, 전달될 수 있는 값을 의미한다. 일반적으로 함수 입장에서는 매개변수, 실제 함수가 호출되어 전달되는 값은 인수라고 한다. ● 지역변수: 함수 내부에서 새로 정의되는 변수이다. 함수명을 제외하고는 매개변수, 지역변수는 모두 스택(Stack)이란 공간에 저장된다. 2. 스택(Stack) 스택은 후입선출 구조로 구성되어 있는 저장공간이다. 현재 스택의 주소를 가리키는 레지스터가 esp. 스택에 저장되어 있는.. 2023. 8. 10.
[꿀팁]5, 6년차 예비군 편하게 가는 방법(기본훈련, 서초과학화훈련장) 안녕하세요~ 어제는 제가 예비군을 다녀왔는데요. 6년차 예비군으로 마지막 기본훈련을 다녀왔습니다. 저는 서초과학화예비군훈련장으로 기본훈련을 다녀왔는데요. 총 3번을 다녀왔습니다. 1번은 허탕... (9시 1분에 도착했는데 안 들여보내주더군요...) 1번은 6시간 훈련 1번은 8시간 훈련 3번동안 다녀오면서 제가 느낀점을 바탕으로 꿀팁들을 알려드릴게요! 예비군 준비물 - 신분증 - 복장: 군복(전투복+군화) / 모자는 필요 없음 - (우천시) 우산, 휴대폰 충전기(추천) 신분증은 본인증명을 하는 데에 당연히 사용되는 필수 준비물이구요. 많이들 헷갈려 하시는 게 전역모나 베레모 가져가야 되냐... 하시는데, 전혀 필요 없습니다. 가져가시면 괜히 짐만 더 늘어나는 거에요😩 비가 오면 훈련장 통제 하에 실내교육.. 2023. 7. 15.
[악성코드 분석]#4 어셈블리어와 디스어셈블리 - part(2/3) 이 글의 모든 내용은 책 '악성코드 분석 시작하기'를 스스로 공부하며 정리한 내용임을 밝힙니다. CPU 레지스터 어셈블리어를 공부하면 반드시 알아야할 CPU 레지스터는 굉장히 다양하고 여러가지 이름을 가진 레지스터들이 등장해서 처음 어셈블리어를 입문한 사람의 골머리를 썩힌다... 이 기회에 책에 없는 내용이라도 정리해본다. 다음 나열된 것들은 리버싱에 주로 사용되는 레지스터이다. 1. 범용 레지스터 - 데이터와 주소를 모두 저장할 수 있는 레지스터로 제일 많이 사용되고 자주 등장하는 레지스터이다. 레지스터 이름(64bit/32bit) 설명 rax / eax 사칙연산에 사용되는 레지스터로 어떤 계산의 결과값을 주로 저장한다. rbx / ebx 주로 메모리 주소를 저장하는데 사용된다. rcx / ecx 주로.. 2023. 7. 11.
[악성코드 분석]#4 어셈블리어와 디스어셈블리 - part(1/3) 이 글의 모든 내용은 책 '악성코드 분석 시작하기'를 스스로 공부하며 정리한 내용임을 밝힙니다. 컴퓨터 프로그램 기초 1. 데이터 단위 ● 바이트(Byte): 1byte = 8bit → 16 진수 2개(00~FF) ● 워드(Word): 2byte ● 더블워드(Dword): 4byte ● 쿼드워드(Qword): 8byte ※ 워드(Word)는 본래 동작하는 CPU의 최소 연산 단위를 의미한다. 예를 들면, 32bit OS에서의 워드는 32bit, 64bit OS에서의 워드는 64bit가 되어야 한다. 그런데 왜 워드의 단위는 2byte일까? 과거 Intel에서 16bit 운영체제에서 사용하던 워드의 단위는 당연히 16bit였을 것이다. 그런데 기술이 발전하면서 32bit 운영체제의 컴퓨터가 필요에 의해 등.. 2023. 6. 28.
[악성코드 분석]#3 동적 분석 - part(2/2) 이 글의 모든 내용은 책 '악성코드 분석 시작하기'를 스스로 공부하며 정리한 내용임을 밝힙니다. DLL(Dynamic Link Library) DLL은 그 자체로서 실행할 수 없지만, 다른 프로그램(실행 파일 또는 DLL)에서 사용할 수 있는 함수를 담고 있는 모듈이다. 즉, DLL 파일은 여러가지 함수들을 익스포트(Export)하고 있으며, 다른 파일들은 해당 DLL 파일의 익스포트된 함수들을 임포트(Import)하여 사용한다. CFF 익스플로러 도구를 사용하면 임포트한 DLL 파일과 그 DLL 파일이 익스포트하고 있는 함수를 볼 수 있다. Import Directory를 클릭하면 해당 파일이 어떤 DLL을 임포트하고 각 DLL이 익스포트하는 함수의 목록을 확인할 수 있다. [악성코드 분석]#3 동적 .. 2023. 6. 21.
인프라(서버,DB,WEB/WAS) 최신 버전 및 EoS 날짜 쉽게 확인하는 방법 요새도 ISMS 심사 준비를 하느라 굉장히 바쁘다... 사실 매일 야근해야 되는 상황인데, 일을 조금씩 미루면서 내일의 나, 다음주의 나에게 의지하고 있다.🤭 ISMS 컨설팅을 받으면서 인프라쪽 취약점으로 우리 회사에서 사용하고 있는 모든 플랫폼의 버전 이슈때문에 결함으로 받았는데, 이번에 IT쪽에 공유하여 짚고 넘어갈 예정이다. 그래서... 서버, DBMS, WEB, WAS 등 모든 인프라에 대해 현황을 모두 파악하고 EOS된 날짜, 권고 버전 등 관련된 정보를 싹 다 조사할 일이 생겼었다. 취약점이 몇 백개라 안 그래도 볼 게 많은데, 이것까지 조사해야하다니 처음에는 막막했다. 각 인프라마다 일일히 검색하고, 공식 문서도 뒤져보고(영어로 돼있어서 읽는데 오래 걸린다😑)... 그렇게 헤매던 도중 구글링.. 2023. 6. 21.