Тёмный

how can HACKERS use Rust for EVIL?? (the future of malware) 

Low Level Learning
Подписаться 596 тыс.
Просмотров 137 тыс.
50% 1

There's a new trend. Malware authors know it. You know it. I know it.
Rust is coming. And there's nothing we can do. In this video, I'll discuss the three reasons I think Rust is starting to appear in malware.
🏫 COURSES 🏫
www.udemy.com/course/c-progra...
🔥🔥🔥 SOCIALS 🔥🔥🔥
Low Level Merch!: www.linktr.ee/lowlevellearning
Follow me on Twitter: / lowleveltweets
Follow me on Twitch: / lowlevellearning
Join me on Discord!: / discord

Наука

Опубликовано:

 

29 июн 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 381   
@mikeg9b
@mikeg9b Год назад
So, Rust enables malware authors to do evil safely.
@whannabi
@whannabi Год назад
We get it it's safe, stop the brainwashing it is safe, it is safe, it is safe, memory safe, memory safe, it is safe, it borrows, no garbage collector, it is safe, safe, safe, safe, safe, safe, rust is good, everyone should use it, it is fast, those C/C++ guys don't get it, use rust, use rust, it is safe, it's portable, it is used in linux, it is safe, memory safe
@OlegLecinsky
@OlegLecinsky Год назад
At least someone has found a practical use for it, instead of just talking how great Rust is.
@Luredreier
@Luredreier Год назад
​@@OlegLecinskyPlenty of people have found practical uses for it. While it's rare to refactor everything into Rust it's actually becoming quite common to refactor bits of code into Rust. Things that needs memory safety, speed, parallelism etc.
@OlegLecinsky
@OlegLecinsky Год назад
@@Luredreier This is all again just talk I've heard before. The same talk we've had 20 years ago about "Linux replacing Windows on a desktop" is now "Rust will replace C++". For a language which is supposed to dethrone C++ the results aren't quite visible yet. I'm sure with some time Rust will find its usages, like Linux still exists on desktop, with probably a couple of % of installations.
@xslvrxslwt
@xslvrxslwt Год назад
@@Luredreier What's the use tho? Rust IS NOT a systems programming language. Rust is an userspace language? Kernels and such - heck no. Rust's unsafe is terrible and it's not meant to be used as much as it's needed in low-level space.
@lothean
@lothean Год назад
"Everything is open source if you can read ass" is the only thing I could see throughout the whole video
@peter9477
@peter9477 Год назад
It was a real trip for me. I went from ass, to asses, then maybe assets, wondered about asserts for a while, and finally, *finally*, saw assemb-- and figured it out.
@wantedsavage7776
@wantedsavage7776 Год назад
@@peter9477 Lol 😂
@unixsocks
@unixsocks 9 месяцев назад
@@peter9477 asm LOL
@nebularzz
@nebularzz 9 месяцев назад
same lmao
@michaelmueller9635
@michaelmueller9635 Год назад
So I should use Rust now.
@MisterZig0
@MisterZig0 Год назад
yup just what I was thinking
@IqweoR
@IqweoR Год назад
Ladies and gentlemen. We got'em!
@yensteel
@yensteel Год назад
- -
@jarvenpaajani8105
@jarvenpaajani8105 Год назад
Highly suggested.Feels like the compiler massages the brain
@andrewsodyssey5753
@andrewsodyssey5753 Год назад
Reject rust, embrace C
@MIO9_sh
@MIO9_sh Год назад
If a language is used by malwares, you know the language is a real deal. Hackers are still the same software engineers that wanted things fast and reliable after all (imagine the virus crashes itself and get caught in early stage).
@gregandark8571
@gregandark8571 Год назад
Aahahahahahahahaha lol you have a very nice taste in thin sharp humor! YOur comment deserves 10k likes!
@seneca983
@seneca983 Год назад
"If a language is used by malwares, you know the language is a real deal." I suppose that must then include Visual Basic since it used to be used for a bunch of macro viruses back in the day.
@MIO9_sh
@MIO9_sh Год назад
@@seneca983 VB used to be it actually, just evolution of the rest of the world pushed it away with time
@ulfricstormcloak3657
@ulfricstormcloak3657 Год назад
@@seneca983 VB just got old and unsupported. It was very good for the time the viruses were made.
@GalokVonGreshnak
@GalokVonGreshnak 6 месяцев назад
​@@seneca983 VB, LUAscript, C++, Powershell, GO, Java, Python, bash-script loaders, etc. All of these are valid attack vectors. IR and malware analysis is reactive so when you're developing in not C/C++, IR has to play catch-up and get to to speed.
@SENTRY456123
@SENTRY456123 Год назад
Rustaceans: Go is a programming language for malware authors! Malware authors: uses Rust Rustaceans: 👁️ 👄 👁️
@tablettablete186
@tablettablete186 Год назад
"Rust is the most loved language by malware authors!" - Not StackOverflow
@ccgarciab
@ccgarciab Год назад
Literally who says that lmao
@monad_tcp
@monad_tcp Год назад
Imagine a payload in "go", it would be like 700MB.
@anon-fz2bo
@anon-fz2bo Год назад
me: uses both coz they're both better than many languages 🤓👍
@SomeRandomPiggo
@SomeRandomPiggo Год назад
​@@monad_tcp 9mb hello world in rust lol
@valshaped
@valshaped Год назад
People will write malware in Bash, Python, Go, Java... Literally anything. It helps that Rust has a well-tested standard library.
@rj7250a
@rj7250a Год назад
I think the most popular languages for wirting this stuff are C, C++, Go and Nim, for specific reasons. C and C++: it is low level and is efficient, so the malware will not use a lot of resources, lowering the chance of detection, also lots of libraries Go: It is easy to write, still can use pointers, decent performace. (You can do pointer arithemitic with the unsafe package.) Nim: Basically C++, but with a python-ish syntax and Garbage collector. (that you can turn off), easy to write, but is a small language, so lacks libraries. (It is so much used for malware that depending on your antivirus, it will flag every Nim program as malware). Rust is only being used more now, because it have more libraries today, the standard library lacks features, like you need to install a crate just to have a random number generator, even the 50 years old C have a a PRNG in the std library. But thankfully Rust is kinda popular today, so you can find lots of crates that make up for the small std library.
@Stopinvadingmyhardware
@Stopinvadingmyhardware Год назад
Bash?
@valshaped
@valshaped Год назад
@@Stopinvadingmyhardware Malicious shell scripts are a thing.
@rbda8921
@rbda8921 Год назад
Not only "a thing", if you use Linux you should always check bash scripts that you get on the web, it's incredibly easy to write bad stuff with bash. Besides it's very easy to check it since it's just a text file (and usually only one text file)
@ultrapoci
@ultrapoci Год назад
What I love about Rust is that once the program compiles, it is basically guaranteed to work and not crash (unless, of course, you make logical mistake in the actual algorithm). It's amazing
@zeez7777
@zeez7777 Год назад
right but logical mistakes make up the majority of them, but its still nice
@ccgarciab
@ccgarciab Год назад
​@@zeez7777 thing is, with better modeling tools you can make some logical errors impossible down the line. Ofc this still leaves the one that you couldn't/forgot to/decided not to forbid, but that's a net win.
@zeez7777
@zeez7777 Год назад
@@ccgarciab sure is :)
@no_name4796
@no_name4796 Год назад
@zeez7777 I am pretty sure the most common error and cause of (big) problems in C/C++ is related to memory management. That's something in rust you can't never have (unless you use unsafe rust, but still the fact you need to declare something is unsafe, instead of just having to know it by experience is wayyy better)
@zeez7777
@zeez7777 Год назад
@@no_name4796 Its pretty hard creating leaks with modern c++ if you're not a beginner
@beragis3
@beragis3 Год назад
Reverse engineering Rust is only hard because writing Rust decompiler hasn't been a priority. If Rust is picking up, then the various software security companies will make this a priority. Back during the time when everyone was worried about the Year 2000 rollover bug there were a lot of legacy programs and libraries whose original source code was lost or there were so many different instances of the program or library and you couldn't tell which version of the source code it mapped to, or if it was even there. Programmers, especially at the various Y2K consulting companies, quickly became really good at reverse engineering from assembly and the various bare bones assembly to C converters. It was right about that time that reverse engineering tools became much more usable. I predict the same will occur now.
@mikefiore2597
@mikefiore2597 Год назад
there's plenty of training data, so it's only a matter of time that a deep learning model / LLM is engineered that decompiles Rust
@patx35
@patx35 Год назад
NGL, I went in expecting an April Fool's joke.
@LowLevelLearning
@LowLevelLearning Год назад
Shit
@slendi9623
@slendi9623 Год назад
@@LowLevelLearning i cannot believe you broke rule 1 of your comment section truly disgraceful and expect an apology video
@billigerfusel
@billigerfusel Год назад
The real joke is that Rust is being useful for something.
@andrerenault
@andrerenault Год назад
The joke is that there is no joke
@johanngambolputty5351
@johanngambolputty5351 Год назад
I finally started looking into compiling code for something non x86 and was surprised to see that people have already been using rust for psp (the 2004 handheld) homebrew, for quite some time too, wild.
@ISKLEMMI
@ISKLEMMI Год назад
Unfortunately, a rising tide lifts all boats. Thank you for the video!
@I_SEE_RED
@I_SEE_RED Год назад
How eloquent
@DreamingCodes
@DreamingCodes Год назад
I believe I can now add malware development to my CV 😅
@tjgdddfcn
@tjgdddfcn Год назад
„The borrow checker” sounds like a Dark Souls boss
@Anon.G
@Anon.G Год назад
It sort of is in a way, it's impossible at first, but those with experience understand it and can deal with it easily(with some occasional deaths/errors)
@jokacantcode
@jokacantcode Год назад
Because of your mic I see " read assembly" as " Read Ass" 💀
@ZeykaFX
@ZeykaFX Год назад
Lol the mic placement makes the t-shirt a whole lot better 👀
@mr.e9778
@mr.e9778 Год назад
i very much loved the short explanation of LLVM and how codes of different languages run on different OSes. Can you please make a more in depth video about this? A lot of us want to get into malware research & reverse engineering nd stuff, but have no idea about how a code can run on different OS, and what must be understood about OS/compiler infrastructures/architecture, to understand how a malware runs on computer.
@mr.e9778
@mr.e9778 Год назад
you just earned a sub btw
@lucass8119
@lucass8119 7 месяцев назад
Really high-level but programming languages need to be compiled before they can be run. Essentially languages like C, C++, Rust, the computer knows nothing about this. The computer only knows machine code, instructions which it can operate on. Compilers don't really compile to machine code, they compile to assembly, and then an assembler turns that into an executable. So, a C++ to x86 compiler will convert C++ to x86 assembly, and then the assembler will convert that into machine code for an x86 computer. What LLVM offers is an alternative. A machine-independent Instruction set architecture. It has similar instructions to x86, primitive things, like load, store, jump, branch. Compilers then target LLVM, and LLVM converts it into a platform assembly. Now, not all platforms have the same ISA. But... they are all turing complete. LLVM can often, but not always, transform some instructions. In reality most programs only need a very small set of instructions to run. Some LLVM instructions may compile to 1 x86 instruction, but 2-3 ARM instructions. Now, where do OS come into play? Theoretically, very little. An x86 algorithm will be identical in Windows or Linux. The binary layout should* be exactly the same. However, the executables themselves are different. You need to construct an OS executable type, like an ELF, so the OS will accept it and know how to run it. But that's just the beginning. In addition, most non-trivial programs require OS intervention to run. This isn't obvious in high-level languages like C++. But a function like, say, allocating memory requires the OS to intervene. These calls to the OS are called syscalls. These are unique to the OS. Calling operator new often performs a syscall, which will be different on Linux than Windows. How does a high-level language and compiler deal with this? It would be incredibly annoying if you had to use a different operator new, or different malloc, depending on which OS you're targeting. Well, the language provides a standard implementation for relevant operating systems. This is often called the standard library, like libc or libc++. At compile-time, the compiler chooses which implementation to use. The code is different, but to the programmer the interface is the same. Malloc is always malloc, but behind the scenes the syscall and algorithm malloc uses will be different for each operating system. They also provide platform-independent frontends for other tasks that require syscalls. For example, std::thread in C++, std::filesystem, etc. Some programs include "hardware intrinsics". These are sections of the program written to target specific hardware. For example, inline x86 assembly in C/C++. These cannot be ported, its simply impossible. So, they're generally avoided and only used in user-land code to do very specific things. You can turn these off on some platforms in the code, using the compiler. You can request the compiler check what platform its compiling to, and if the specific hardware code doesn't work there then don't compile it. Very common to see in high-performance hardware-bound applications, like video games.
@kirilldanshin
@kirilldanshin Год назад
Love the mic position in the monologue shots: “everything is open source, if you can read ass”
@FBI_Master
@FBI_Master 4 месяца назад
1:00 try making an undo redo function for a GTK TextBuffer that you need to share between event contexts. That will crash a few times till you get it right.
@siroj4249
@siroj4249 Год назад
That shirt in combination with the last point is pretty funny.
@donaldmickunas8552
@donaldmickunas8552 Год назад
Hey Jake, This doesn’t surprise me. Any tool can be used for both good and evil. I’m sure that efforts have redoubled to produce reverse engineering tools for Rust as I write this. Great video as usual. 😀
@porky1118
@porky1118 Год назад
0:14 "Criminal use it" The best argument for using some technology ;)
@Shikaku2
@Shikaku2 Год назад
This is a similar situation that happened when Unity, the 3D game engine, started taking off. Shovelware just kept being made with Unity. Just like any tool, especially if it's easier to use and better, people will use it for good and bad purposes
@jonbezeau3124
@jonbezeau3124 Год назад
My biggest barrier to entry on Rust is how every video about it sounds like a sales pitch. I thought this one was going to dish up some critique.
@bhumiputra6108
@bhumiputra6108 Год назад
Thanks for sharing the info. Great video.
@LowLevelLearning
@LowLevelLearning Год назад
Thanks for watching!
@sammyfromsydney
@sammyfromsydney Год назад
Real reason: A guy or two getting right into authoring malware recently have a Rust background.
@asdfasdfasdf1218
@asdfasdfasdf1218 Год назад
Yes, don't underestimate the impact of a single individual making 90% of contributions to a small field.
@lepidoptera9337
@lepidoptera9337 3 месяца назад
Rust is not a panacea. The other day I had a problem on a microcontroller that would have occurred with Rust as well. The data cache was overriding the DMA from a peripheral. Instead of getting fresh data after a DMA interrupt I was getting the same data over and over, again, from the data cache. That's just how the hardware implementation of that particular controller works. Is it a bug? Is it a feature? Who knows. The only way to override it is by either not using DMA (there goes your performance for that particular function), by disabling the data cache (there goes your performance for the entire code) or by manually programming the MMU to remove the DMA buffer from the data cache (there goes your convenience). The only other reason why that particular code ever crashed was a single division by zero error, which would not even have caused a user problem, even if it hadn't been caught.
@wtfdoiputhere
@wtfdoiputhere Год назад
Currently falling in love and enjoying the rust book and this is interesting 👀
@carlos_3143
@carlos_3143 Год назад
"Everything is Open Source if you can read assembly..." - Ser.
@Leonardo-tb9qu
@Leonardo-tb9qu Год назад
Thanks for the info ! I'm not a native english speaker, so I try to read everything that i see. I've read your t-shirt at 0:34 while the microphone covered ("everything is open source, if you can read ass..."), too funny 😅.
@spodarman3823
@spodarman3823 Год назад
u have such a good channel man
@swordwaker7749
@swordwaker7749 Год назад
So, "It takes a good guy with Rust to stop a bad guy with Rust"?
@thisismissem
@thisismissem Год назад
I'm a bit amused by how your shirt reads when it's obscured behind the mic stand 😆
@andrewdunbar828
@andrewdunbar828 Год назад
It would be interesting to know how we can tell which malware was written in Rust from examining the binaries. I'm assuming from the runtime/equivalent of libc included?
@Demonslay335
@Demonslay335 Год назад
An easy way is just search the strings for "crate". A Rust binary (that hasn't been completely mangled to hell) will have package strings for every crate that was included by the dependency manager.
@yigitgumus_
@yigitgumus_ Год назад
Dayyum content is blazingly fast. 😂
@Finkelfunk
@Finkelfunk Год назад
Whoever made that language tierlist should _seriously_ consider unlive. C# above C++, bash and Lua in the same tier as php, Go and Assembly in the same tier as Kotlin, Elixir, Python and Ruby in the same tier as Cobol, Zig on par with Rust. This isn't just objectively wrong, this is a cry for help. I wanna know who performed the lobotomy on the person that made this list.
@allesarfint
@allesarfint Год назад
The most evil part about Rust is that at some point it becomes Assembly, the most unBased language. Truly a work of evil.
@hdjwkrbrnflfnfbrjrmd
@hdjwkrbrnflfnfbrjrmd Год назад
The most evil part about Rust is that it's a neomarxist programming language.
@Wow4ikFD
@Wow4ikFD Год назад
@@hdjwkrbrnflfnfbrjrmd what does it mean? 😅
@jakub2631
@jakub2631 Год назад
@@hdjwkrbrnflfnfbrjrmd what? lol
@TheOtherBradBird
@TheOtherBradBird Год назад
@@hdjwkrbrnflfnfbrjrmd I've noticed that all the worst sort of commie scum seem to main that language. That realization snuffed out any desire I had to work with Rust. I refuse to accept them as my peers.
@_garicas
@_garicas Год назад
@@hdjwkrbrnflfnfbrjrmd so true, fr fr no cap
@steven9423
@steven9423 Год назад
Is the end of video pointing to another video an April fools joke? I really am interested in the invisible video lol
@jongxina3595
@jongxina3595 Год назад
Are u gonna make a guide on how to write malware in Rust?
@pbnjdev
@pbnjdev Год назад
Pedantic nit: "it is almost impossible to make code that crashes using rust" Try accessing an out-of-bounds index in Rust. It will panic and crash, which is actually the "memory-safe" response rather than accessing illegal memory. Rust protects you from data races, but it does not protect you from crashing your application.
@doofus989
@doofus989 Год назад
its also obscure lang so most basic functionality of the lang doesnt have signatures, for example a basic socket connect command and control in python will get detected (in some cases) but in rust it doesnt
@user-hi9br4mm8q
@user-hi9br4mm8q Год назад
Please, make content about Zig also. I would love to see
@DexieTheSheep
@DexieTheSheep Год назад
Wrote a ransomware thingy in Rust to see if AVs would catch new malware, and yeah, I gotta say it was way easier than expected with Rust. No wonder real cybercriminals are trying it out.
@vampirenoodles
@vampirenoodles Год назад
hi dexie :0
@DexieTheSheep
@DexieTheSheep Год назад
@@vampirenoodles ainoway the real vampirenoodles from fortnite battle royale?
@vampirenoodles
@vampirenoodles Год назад
@@DexieTheSheep the one n only😎
@jeanpierre5941
@jeanpierre5941 Год назад
The thing is that MalDev wise, windows( Memory operation and process injections can not be made safe) especially most rust will be unsafe and it won’t crash more often that a malware written in modern C++. On the question of portability, “APT tier” malware are complex suite of software, but their main problem is evading detection and event tracing, and that means calling and interacting with the API at it’s lowest level or in an unintended manner which are non prortable, also they are sometimes multi process applications which are modular and have the same problem of using IPC in a non standard way because IPC is one of the biggest IOC same with communication, so using libs or open source ecosystem could be counter productive. Rust as being anti RE, yeah maybe on a Sunday hobbyist malware analyst but for a professional one it won’t stop them for more than 30 minutes, there are also efficient obfuscation techniques available to most compiled languages which won’t stop RE either. The reason they use rust, is because rust is a nice language, that flows perfectly when you have a lot of practice on it. A nice example of rust malware is Zerosum0x0 SassyKidti which is an example of Rust kernel shellcode.
@martingeorgiev999
@martingeorgiev999 Год назад
is there a video where you complete the tierlist you mentioned
@gabrielspeed5464
@gabrielspeed5464 Год назад
"[Rust is integrated with LLVM] unlike a lot of other languages" I'm pretty sure there's tons of LLVM Lang's we don't know about :) and a few that we do
@kamertonaudiophileplayer847
Generally a crashing Rust program isn't so difficult. I did it many times. So, my take is that malware writers are not normal people. So they use not a normal language for the reason of that.
@0x-003
@0x-003 Год назад
Hi there, i just discovered your channel, and i cant find any video on "who you are" can you create a video on who you are, how you started etc etc?.i want to learn about your background and how you started
@supercheetah778
@supercheetah778 Год назад
For most of this video, I was too distracted by thinking your shirt said, "everything is open source if you can read ass."
@max_ishere
@max_ishere Год назад
There's also the windows crate. Which from what I've heard is c# in rust
@michasmarzewski3670
@michasmarzewski3670 Месяц назад
I don't like Rust for its inconsistency, terrible syntax, camel case nightmare and abstractions. It's inconsistency (two ways of declaring variables and functions using and not using "where") will lead to many dialects which will make new code harder to read.
@ErikBongers
@ErikBongers Год назад
Hackers are so easy to recognise. They always sit behind a computer wearing a hoody.
@blastygamez
@blastygamez Год назад
Hmm many people like rust I don’t, i just like the classic c :)
@miracleinnocent2649
@miracleinnocent2649 Год назад
In terms of reverse engineering as long as any language uses LLvm or Gcc there’re many many tools for that especially they way how these compilers build the windows binary and they’re traceable because rust still use libc, Go on the other hand is a first class citizen of static compilation bypassing layer security checks, directly through the kernel, Go having its own linker, assembler with big binary surpassing antivirus checks limit that’s a big one
@torphedo6286
@torphedo6286 Год назад
Interesting, I didn't realize that Rust was harder to reverse-engineer, but now that you mention it that makes sense. I may start writing some of my code in Rust, because I do have a project that would benefit from being harder to take apart.
@theonetribble5867
@theonetribble5867 Год назад
It's even so good that I only had to use a Debugger twice in the last year of writing Rust and that was because bugs in FFI libraries.
@alexandrohdez3982
@alexandrohdez3982 Год назад
Great video again 👏👏👏
@sakuyarules
@sakuyarules Год назад
This was an interesting vid, but I couldn't stop looking at his shirt. When the mic was covering part of it I kept seeing: "Everything is open source if you can read ass" lol.
@Sigma1
@Sigma1 Год назад
Oh no, C++ with nullptr checks everywhere, how will we decompile it
@juanlemod
@juanlemod Год назад
I keep thinking of Rust (the video game) whenever I see it in the title of a video.
@SauvikRoy
@SauvikRoy Год назад
If you are trying to use rust on windows, good luck with that because certain crates will just refuse to compile. The llvm backend is used by rust to generate code, but you'll struggle even to get basic functionality like profiling, coverage to work. The only solution is to build the rust compiler from source, so that leaves you in the territory of custom toolchain. I know, because I'm struggling with the same. But static analysis time memory diagnosis looks very neat. Maybe it might become popular in the near future, but it is never replacing C or C++. Who writes malware for Linux anyways?
@_garicas
@_garicas Год назад
Well, it really depends on the implementation. I'm writing a library in Go which for now only works on Unix systems due the syscalls I'm using. And the last question, most servers run Unix systems like Linux and BSD, which are greater targets than your neighbour maybe. Also some people have that tendency to think they're safe just because they use Linux, but that overconfidence just make them easier targets. But of course, the majority of malwares are on Windows due it's popularity
@michasmarzewski3670
@michasmarzewski3670 Месяц назад
@@_garicas Linux is far more popular than windows - Android and servers. Nobody is safe, but everyone who uses his brain is safer on Linux.
@kommandant3139
@kommandant3139 Год назад
Can you make an assembly tutorial
@zahash1045
@zahash1045 3 месяца назад
You mess with crabbo you get stabbo
@deadeye8
@deadeye8 Год назад
Gotta learn rust!
@Yupppi
@Yupppi 8 месяцев назад
I feel like as usual, anything that makes regular people happier and work better, helps malicious people too.
@SaiGuy_
@SaiGuy_ Год назад
its kinda funny how his shirt says "everything is opensource if you can read ass" thats pretty sussy if you ask me
@cc1drt
@cc1drt Год назад
Just wait till gpt5 is trained to reverse engineer rust. This benefit is extremely temporary, and should not be a reason to just begin learning rust for young folks to learn hacking
@ESPViper100
@ESPViper100 3 месяца назад
0:12 Love your shirt ("you can read ass")
@emmanuelgoldstein319
@emmanuelgoldstein319 Год назад
"Everything is open source if you can read ass"
@ANDREY34H
@ANDREY34H Год назад
XDDD I WAS THINKING ABOUT IT
@Heater-v1.0.0
@Heater-v1.0.0 6 месяцев назад
I'm so glad to hear malware authors take pride in the quality of their creations. Sadly, currently, many creators of software do not. Personally I think it is professional negligence not to take steps and use tools the help achieve the best software quality one can (In terms of robustness, reliability, security, etc). That is to say negligent to use error prone languages like C and C++ when alternatives like Rust exist that greatly mitigate a lot of silly mistakes we can (and do) make. These malware authors are a great example of professionalism for the rest of us that we would do well to follow.
@lepidoptera9337
@lepidoptera9337 3 месяца назад
C and C++ are not "error prone". They simply let you do more than Rust does. Technically there are no such things as "programming errors". There is only a disconnect between the programmer's mental model of what the code does and the actual reality of what the code does. All of my buffers are allocated statically, they are powers of two sized and I generally use a binary mask for the index. That's 100% buffer overflow safe. Rust can't do any better than that, either for scenarios which do not require dynamic memory allocation. At most it can make dynamic memory allocation more convenient than my programming model would. I use finite state machines for parsing of datagrams and they always include conditions that lead to one or several "invalid" states. Rust can't do any better than that, either, because it does not have a mathematical prover that can prove that your datagrams are safe. You have to make sure of that. Using these techniques I have programs out in industrial applications that have 100% uptime and zero known bugs. If that is what you need, then you just have to use your tools in ways that make sure that that is what you get. Relying on a language to do the thinking for you is a guaranteed recipe for failure.
@Heater-v1.0.0
@Heater-v1.0.0 3 месяца назад
@@lepidoptera9337 Yes, if you want to be pedantic a programming language, (C, C++, anything) is not "error prone". However programmer are. The question is does the language help prevent its users from making silly mistakes. Same like how all kind of dangerous machines are not error prone, their users are, that is why we have all kinds of safety guards and interlocks on dangerous machines. Of course there are such things as programming errors. Same like their are spelling and grammatical errors in normal writing which give the reader the wrong idea, Same like their are errors of judgement that cause drivers to crash their cars. The question is does a programming language help detect those silly programmer mistakes. I'm glad to see you take steps to avoid bugger overruns etc in your code. I don't see why you would not welcome a language that can check all those things for you automatically and save you the trouble. It's wrong to say that Rust cannot do better than you at detecting memory misuse errors. Being human you are prone to making mistakes, you will be tired, or sick, or under pressure to finish, or just have a bad day. Where as Rust will check your work all the time. If nothing else Rust removes the need to check everything yourself all the time. I do agree with you when it comes to program logic or algorithmic correctness. Like you state machines example. Rust cannot save you from writing the wrong algorithm. As you say we don't have the mathematical provers for that. And if we did we would have a very hard time specifying the problem to be proved. Rust does not claim to do that. However the type and memory misuse checking it does is a huge advantage in ensuring program correctness,. Actually state machines is a case where Rust's type system can help greatly in ensuring you write correct state transitions. So not a good example of why Rust does not help. I also agree that if one wants as few bugs as possible and reliable systems one should use the available tools in ways that make sure that is what you get. One of these tools is type safe and memory safe languages like Rust. By your own logic if one wants bug free reliability one should be using languages Rust to help. Nobody is saying rely on the language to do the thinking for you. But I bet you are happy to let a calculator do complex arithmetic for you rather than working it out with pencil and paper. There is no way having a language like Rust check for type and memory misuse can be a recipe for failure. Like you I have been working on industrial applications in languages like C, C++, PL/M, Pascal for a long time. Since 1882 about. I have adopted techniques as you describe to ensure things work reliably. Some other those systems have been running trouble free for twenty years and more. I am very glad to now have a language like Rust that saves me all the tedious and error prone manual checking of everything I do. Many others in industry have had the same experience. For example recently came this story from CloudFlare: blog.cloudflare.com/how-we-built-pingora-the-proxy-that-connects-cloudflare-to-the-internet.
@tocraft573
@tocraft573 Год назад
Reverse engineering rust isn’t as hard as people think it is, if you spend a few minutes you can find out how it works and follow the execution patterns, sadly though IDA does horribly in displaying rust binaries, but other tools such as radare and binj does so much better
@Khipher
@Khipher Год назад
I know I can’t be the only one who saw this in their recommended, thought it was about the survival game, and then was pleasantly surprised by it being a different Rust entirely.
@averagearchuser
@averagearchuser Год назад
Hot take but I think malware is good on windows because it gives people more reason to switch to a good operating system like Linux or bsd
@DimiEG
@DimiEG Год назад
The question is, what language do you prefer yourself?
@dragoons_net
@dragoons_net 2 месяца назад
Interesting, again: didn't know/realize that Rust was more difficult to reverse engineering!
@avithedev
@avithedev Год назад
I have never seen a better reason to learn rust
@AexisRai
@AexisRai Год назад
So part of the difficulty in reversing Rust will go away as tools are produced. Are there any language reasons Rust might _always_ be harder to reverse than C/C++ at baseline? To me that's the more interesting question. Out of "more reliable", "more targets", and "reversing is harder", the last is the one with potential.
@altrag
@altrag Год назад
That was the little bit about "cost-free abstractions". Basically structure in your code that isn't in the binary at all, and therefore can't be reverse engineered out of the binary. That doesn't make the reverse engineering impossible, but it makes understanding what you're reading a little bit harder since you've irrevocably lost a lot of the structural information.
@SimonClarkstone
@SimonClarkstone Год назад
For example, a chain of iterator methods might get inlined and optimised to the same code as a series of `if`s and loops, which will be hard to decompile into anything like the original code.
@Valery0p5
@Valery0p5 Год назад
I guess once someone who knows LLVM starts working on a new decompiler things will get easier. And hey, there's money to be made here!
@yuyuyuyuyuy484
@yuyuyuyuyuy484 Год назад
Great work as always.
@LowLevelLearning
@LowLevelLearning Год назад
Thank you! Cheers!
@kommandant3139
@kommandant3139 Год назад
Nice video
@LowLevelLearning
@LowLevelLearning Год назад
Thank you!
@zxmon_
@zxmon_ Год назад
Great Tutorial, very good reasons to rewrite all my malware in Rust. Definitely going to stop writing all my malware in C now.
@bazoo513
@bazoo513 Год назад
A youtuber who endeavours to teach us low level programing is amazed when his trivial implementation of httpd does not crash... Oh, how low have we fallen!
@tilakmadichettitheappdeveloper
unsafe { // screw the borrow checker }
@ta_noshii
@ta_noshii Год назад
what happened to john hammond
@andlykwan
@andlykwan Год назад
it was not right there :(
@74Gee
@74Gee Год назад
So if, for example if someone wanted to use AI to write code that iterates through millions of attempts to find and exploit CPU vulnerabilities, like Spectre or Meltdown, with a view to replicating itself to other memory space and then other systems, you think Rust would be the way to go. And the top story tonight: The Rust based GPUWorm V23434.32464.1 started at Nvidia cloud platform and spread to all GPUs on the planet, freezing up the internet, communications, financial institutions and travel for the foreseeable future. Experts think it cannot be stopped.
@user-qr4jf4tv2x
@user-qr4jf4tv2x 8 месяцев назад
when hackers have clean machine code more than your 6fig nodejs dev that's putting too much faith in WAF
@tigerscott2966
@tigerscott2966 Год назад
Well, if the malicious code works on Windows computers, fine.... Windows is only useful if that computer is not connected to the internet...
@arnold123user
@arnold123user Год назад
title and first 10 seconds totally convinced me to learn rust
@milespiano
@milespiano Год назад
If anyone says we should then get rid of rust… no.
@Splarkszter
@Splarkszter Год назад
Not surprising, EVERY tool is a weapon.
@user-ic1ku9np6h
@user-ic1ku9np6h Год назад
Rust enables people to write blazingly fast malware with fearless concurrency.😅
@guilherme5094
@guilherme5094 Год назад
Nooooo! You were the chosen one!
@phenanrithe
@phenanrithe Год назад
Does LLVM really support more CPU architectures than gcc? And does it matter for malware anyway? I'm not really convinced. LLVM is modular and so its back-end can be used by any IR compatible source (compilers, transpilers, ...), but that doesn't mean that it can target more architectures than gcc (for instance). Tip: you should stop messing with the zoom when you record your video, those jumps are most distracting.
@phenanrithe
@phenanrithe Год назад
I have a simpler theory. Rust is intellectually interesting to learn, which must attract hacker-minded people. Among those are people who create malware.
@Starius2
@Starius2 Год назад
EVERYTHING can and probably will be used for evil.
@LordHog
@LordHog Год назад
I know this was publish on April 1st, but I consider the Rust zealots evil
@Captain.Mystic
@Captain.Mystic 6 месяцев назад
Nothing says lawful evil like using the most efficient and safe solution to extract as much money as possible. Hey why does that sound like it applies to more than just hackers?
@zer0day463
@zer0day463 9 месяцев назад
Okay. Enough motivation to learn rust today
@lepidoptera9337
@lepidoptera9337 3 месяца назад
You don't have to learn Rust. You have to learn computer science and then use what you have learned. ;-)
@zer0day463
@zer0day463 3 месяца назад
@lepidoptera9337 I already studying lol, will do masters too
@lepidoptera9337
@lepidoptera9337 3 месяца назад
@@zer0day463 Good for you! Happy learning!
@robonator2945
@robonator2945 8 месяцев назад
We need common sense Rust control!
@wantedsavage7776
@wantedsavage7776 Год назад
Rust being used for evil*. The rust community: Yay it works!
@74Bagas
@74Bagas Год назад
.exe, .exe, .exe, and more .exes.... hahaha... and i am doing "cargo install" all the time on fedora 😂
@ariasm8911
@ariasm8911 Год назад
i thought you mean Rust game which made sense anyway
Далее
random numbers are broken.
4:42
Просмотров 62 тыс.
malicious javascript injected into 100,000 websites
12:28
Ummmm We "HAIR" You!
00:59
Просмотров 8 млн
Rust Is Boring
10:37
Просмотров 189 тыс.
Learning HTML When I Was 10 Years Old
0:58
Просмотров 457 тыс.
why do hackers love strings?
5:42
Просмотров 397 тыс.
the truth about ChatGPT generated code
10:35
Просмотров 216 тыс.
computers suck at division (a painful discovery)
5:09
AWAVAUATUSH
0:27
Просмотров 665 тыс.
How A Steam Bug Deleted Someone’s Entire PC
11:49
Просмотров 906 тыс.
Что не так с LG? #lg
0:54
Просмотров 84 тыс.