728x90

*아래 내용은 동아리 스터디에서 진행했던 내용이며 혹시모르는 문제발생 방지를 위해 별도의 이미지, 코드를 공개하지 않습니다.*

 

 

1. 다운로더 악성코드

  • 웹서버에 존재하는 링크르르 타고 들어가서 다운로드하고 실행해서 침입하는 것을 말한다.
  • 트로잔이라는 기법과 함께 자주 쓰인다.

2. 트로잔이란? 

  • 악성 루틴이 숨어있는 프로그램, 겉보기에는 정상적이지만 안에 악성코드가 담겨있음
  • 보통 다른 파일에 삽입되거나 스스로 전파하지는 않음
  • 목적: 파괴적 목적, 자원이나 신분의 사용, 금전 절도, 랜섬웨어, 데이터 절돠, 스파잉,
    감시 또는 스토킹

 

3. API(애플리케이션 프로그래밍 인터페이스)

 주어진 코드에서는 LoadLibrary와 URLDownloadToFILE이 해당한다. URLDownloadToFILE은 그 뒤에 나오는 링크로 가서 다운 받으라는 의미를 가진다. 그리고 그 뒤의 파일 주소는 다운로드 후 저장되는 것이다.

 

3-1.URLDownloadToFILE

  • szURL: 다운로드할 URL이 포함된 문자열 값에 대한 포인터. NULL로 설정할 수 없다.
  • URL이 유효하지 않으면 INET_E_DOWNLOAD_FAILURE이 반환
  • szFileName: 다운로드를 위해 생성할 파일의 이름 또는 전체 경로를 포함하는 문자열 값에 대한 포인터, 경로가 포함된 경우 대상 디렉토리가 이미 존재해야함
  • dwReserved: 예약됨. 0으로 설정해야 한다.
  • lpfnCB:IVindStatusCallback 인터페이스 호출자 포인터. 다운로드 상태를 수신할 수 있음. 필요없는 경우 NULL로 설정할 수 있다.
  • 반환값: S_OK , E_OUTOFMEMORY , INET_E_DOWNLOAD_FAILURE
  • 파일을 생성할 수 없고 다운로드가 취소되어도 다운로드가 성공되었다는 반환값이 출력됨.

3-2 WinExec - exe파일을 실행

빌드를 하게 되면 빌드가 성공한 것을 확인할 수 있다. 하지만 URLDownload라는 함수자체가 함부로 쓰면 안되고 존재하는 것으로 임시로 했기 때문에 실제 실행은 안된다. 형태는 어느정도 맞다는 것을 확인할 수 있다. 그리고 exe 파일 형태로 실행 파일도 생겼다.

 

4. VirusTotal을 이용한 악성코드인지 확인하기

virustotal을 이용해 악성코드인지 확인해 보았다. 일부 프로그램에서 악성코드라고 경고하는 것을 확인할 수 있다. 이 이유는 앞에서 언급한 두 함수 때문이다. urldownloadtofile과 winexec가 악성코드로 인식된 것이다.

 

5. sysAnalyzer을 이용한 분석

  • SysAnalyzer란? 동적 분석 툴
  • 사용하는 API함수를 알아보거나 접근하는 디렉토리 확인, 모든 패킷 캡처, 무엇이 변경되었는지 등 많은 정보를 얻을 수 있다.

sysanalyzer 프로그램을 실행한 뒤 executable에 실행파일 넣어주고 시작하기를 하면된다. 실행해보면 분석된 파일들을 확인할 수 있다. 이제 viewer을 이용해 리포트 파일이 나오게 되는데 디버깅이나 디버그 로그파일에 대한 리포트를 볼 수 있다. viewer에서 각 탭을 클릭해서 dll파일이나 여러 포트, 파이프 등을 확인 할 수 있다. string.log를 이용해 dll파일도 확인할 수 있다. 전체 파일에 있는 string값을 가져온 파일이다.

 

6. pestudio를 이용한 분석

pestudio를 열어서 downloader.exe를 불러와서 진행한다. pestudio에서는 위험도 역시 확인할 수 있는데 1
이 가장 위험한 것이고 숫자가 올라갈수록 안전하다. 이렇게 각각에 대해서 다 확인할 수 있다. 여기서 다시 string을 보면 무엇이 블랙리스트인지 위치는 어디에 있는지 값은 어떤 것인지 알려준다. 다시 indicater를 보게 되면 문자열을 참조하였다는것이랑 virustotal이랑 이런 파일들이 실행되었다는 것을 확인하고 위험한 것들을 확인할 수 있다. 무엇이 위험한지 확인을 하는 것이라고 이해를 하면된다. 각각의 indicater들을 확인하면된다. 그리고 virustotal도 확인할 수 있는데 앞에서 언급했던 virustotal 사이트에서 나왔던 것과 마찬가지로 score는 13이라는 것을 볼 수 있다.


그리고 이외에 다양한 메뉴을 이용해 악성코드를 탐지할 수 있다.

728x90
728x90

*아래 내용은 동아리 스터디 중 공유받은 내용이며 실행했던 코드는 별도로 공개하지 않습니다.*

 

1. visual tudio를 이용한 코드 실행 확인

먼저 c++코드를 받아서 visual studio로 실행을 시켰다.

결과는 각각 키를 입력할 때마다 그 키값이 화면에 출력되었다.

 

2. x32dbg.exe로 확인하기

visual tudio에서 실행했던 파일을 찾아서 불러왔다. 

 

그리고 설정을 수정하면 좋다고 해서 해보았다.

설정-환경설정으로 들어가서 시스템 중단점, 진입점 중단점, TLS 풀백에 체크가 되어있는 것을 시스템 중단점, TLS 풀백 체크를 해제 시켜준다.

 

그리고 현재 실행중인 화면에서 F8을 누르고 함수 호출하는 코드를 찾아 누르게 되면 실행하게 된다. 그리고 클릭해 마우스 오른쪽을 눌러서 다음을 찾기-모든 모듈-문자열 참조를 가면 창이 뜨게 되고 key라는 것을 볼 수 있다. key는 주소를 확인할 수 있다. 그리고 여기서 브레이크 포인트를 걸어서 진입을 해볼 수 있다. 메인함수를 진입해 F8을 눌러서 실행하도록 만들어주고 그렇게되면 메인함수에서 어떤게 실행되고 있는지 확인할 수 있다. 그리고 snowman 확장자를 실행해본다. x32dbg plugin에 다운받아 넣어서 c언어에서 어떻게 생겼는지 볼 수 있다.

 

다음으로는 스택공간을 확보하는 것이다. 일단 여기서 중요한 것은 cell로 불러들이는 함수, jump부분이다. 이것이 중요한 이유는 F8을 누르다보면 반복문에서 반복이 되는 것을 볼 수 있기 때문이다. 성립하는지 검사해주는 것이다. 그리고 클릭이벤트가 발생한 지점엣 F9을 누르게 되면 jump한 것들이 어떻게 되어있는지 확인할 수 있다.

 

+)쉽게 해주는 단축키

  • F7: 함수불러올 때 그 함수 안으로 들어가게 해주는 키이다.
  • F8: 한줄한줄씩 실행을 시킨다.
  • F9: F2로 정해진 곳까지만 실행하고 멈춘다.
  • F2: Break Point를 건다. 멈추는 곳을 지정한다.
  • F10: 처음부터 끝까지 실행한다.
  • 8+shift+F8을 하면 현 위치로간다. 자기자신의 위치를 보여준다.
  • ctrl+F2: 현재 하고 있는 것을 보여준다.
  • Ctrl+G: 따라갈 표현식 입력 창이 뜬다. 주소입력해서 갈 수 있다.
  • Space: 어셈블을 보여준다.
    되돌아가기 버튼: 재실행을 시켜준다.

 

+)기억해야 할 코드

  • je, jge, jmp,push, ,mov 이것이 중요하다. ->숙지
  • push: 스택 영역에 저장시켜 놓는 것이고 주로 지역변수나 call함수 했을 때 다시 돌아와
    야 하기 때문에 스택영역에 저장해두는 경우가 있는데 이때 활용되는 것이다.
  • pop: push에 같이 오는 것, 저장되어있던 것을 가져와서 쓴다.
  • mov: edp, esp 두 인자의 값을 넣는다.
  • edq: 주소를 저장해 놓는 레지스터
  • esp: 스택의 포인터, 스택의 위치 알려준다.
  • cx: 카운터 레지스터-> 반복문 1씩 증가시킬 때 이것을 1씩 증가시킨다.
  • je: z플래그가 있는데 결과값이 0일 때 설정됨-> 1 아닐때는 0이 된다. jump와 비슷한
    것이다.
  • jge: eax가 크거나 같거나 할 때 발동이 돼서 넘어간다.
  • call: 함수를 불러올 때 사용하는 명령어이다.
728x90
728x90

1. 결정 = 비교+선택

 

2. 비교가 어려울 때 : 대소 관계가 명확하지 않거나, 비교해야 할 특징이 너무 많을때

 

3. 결정하는 사람 : 사람->컴퓨터 => 이것을 기계학습이라고 한다.

https://zdnet.co.kr/view/?no=20161216153404

4. 머신러닝 : 인간의 판단능력을 확장해서 두뇌가 빠르고 정확하게 해준다.

 

5. 습관 : 무의식적으로 무언가를 하고 있는것. 그래서 바꾸기가 쉽지 않다.

           하지만 의지에 따라서 환경이 바뀌게 되면 습관은 서서히 바뀐다.

           즉 습관은 의지를 이기고 의지는 환경을 이기고 환경은 습관을 이긴다.

 

6. = 꿈+능력

스마트폰을 사용하기 위해서 제조방법을 알아야할까? 아니다.

사용자가 되어 문제를 해결하다가 필요한 것들을 차근차근 해결하면 된다.

 

7. 머신러닝 : 문제와 정상을 학습을 시킨다면 습관을 해결할 수 있다.

 

8. Techable machine : 수학, 코딩 능력 없이도 머신러닝을 해볼 수 있는 사이트

                         이미지, 자세, 오디오 프로젝트가 있다.

                         각 클래스를 샘플과 함께 만들어주고 이것을 training한다.

                         이렇게 하게 되면 보여준적 없는 이미지에도 판단 가능

 

머신러닝에서 판단력이 핵심! 여기에서는 판단력을 모델이라고 한다.

https://www.bloter.net/newsView/blt202003120024

9. 모델: 먹을수 있는 것 먹을 수 없는것->교훈

           추측해서 먹을수 잇는 것인지 먹을 수 없는 것인지 결정이 가능

           가설에 모순이 없다면 이론으로 인정-> 예측 가능

           과정을 학습이라고 하고 이른 통해 좋은 추측을 할 수 있다.

           학습이 잘 되어야 좋은 추측을 할 수 있고 좋은 결정을 할 수 있다.

 

 

*유튜브 생활코딩 채널의 머신러닝 영상 ot~(6)을 참고하여 작성하였습니다.*

 

728x90

'AI > ML' 카테고리의 다른 글

머신러닝이란? (4)  (0) 2021.11.29
머신러닝이란? (3)  (0) 2021.11.15
머신러닝이란? (2)  (0) 2021.11.11

+ Recent posts