web-dev-qa-db-fra.com

J'ai l'impression qu'il est impossible d'apprendre l'ingénierie inverse

Je sais comment utiliser la plupart des outils de Kali comme msfvenom et msfconsole et je peux m'appeler en toute sécurité un script kiddie. J'ai appris les bases de C # et cela m'aide à comprendre certaines choses en C, mais je me perds facilement. Je connais les bases de l'assemblage comme mov xor add jmp cmp etc mais il m'est difficile de suivre le flux de code réel et je ne serai probablement pas en mesure de créer un pseudo code C à partir d'un programme d'assemblage

Je veux cesser d'être un script kiddie et commencer à être meilleur, pas pour en faire une carrière, mais simplement parce que j'aime tout le concept des outils de programmation, trouver des exploits et profiter des trous dans le système.

J'ai commencé à suivre ce livre "The Shellcoder's Handbook" et j'ai lu les 4-5 premiers chapitres. J'ai en quelque sorte compris l'idée et le concept, mais il m'est très difficile de suivre ce qui se passe réellement.

J'étudie depuis 8 heures tous les jours après le livre et des vidéos similaires, mais je ne ressens pas beaucoup d'amélioration.

Ma méthode est-elle mauvaise?

Suis-je en train de partir d'un mauvais endroit?

Est-il préférable d'apprendre toutes les commandes en python/C et dans l'ensemble les langues ou dois-je les apprendre tout en étudiant des livres et des vidéos comme ceux-ci, car je suis assez bon en C # (ou du moins je le crois)?

Est-il normal de difficilement comprendre ces choses? Je veux dire, je peux comprendre comment fonctionne un script Shell, par exemple, mais je ne peux pas en créer un moi-même s'il est laissé seul pour le coder.

30
Nikolay Atanasov

Alors permettez-moi de préfacer ceci avec "je n'implique pas que vous êtes un enfant"

Souvent, lorsque j'enseigne le CIS aux enfants et qu'ils entendent ce que je fais dans la vie, la première question est

"Comment pirater?"

Je vais te dire la même chose que je leur dis. Le piratage n'est pas une chose que vous apprenez autant qu'il est le résultat d'années d'expérience dans une série de sujets liés à la sécurité.

Souvent, vous constaterez que les gens pénètrent dans le domaine de la sécurité provenant de milieux logiciels et de réseaux. J'ai commencé mon chemin de sécurité il y a quelques années en assistant à defcon, derbycon et à d'autres événements liés à la sécurité. J'ai appris que si je voulais le faire professionnellement, je devais creuser plus profondément. J'ai appris qu'aucune connaissance magique ne faisait de vous un professionnel de la sécurité. Juste du travail acharné et apprendre ce qu'il faut pour sécuriser les choses.

Après avoir construit de nombreux projets Arduino, mis en place de nombreux serveurs Web à partir de zéro, créé de nombreux sites Web à partir de la base de données, pris (et à défaut de vous) mon OSCP, je suis finalement arrivé à un point où je me sentais à l'aise de m'appeler ingénieur logiciel de sécurité . L'entreprise dans laquelle je travaillais à l'époque avait un programme de champions de la sécurité pour les ingénieurs. Ils ont donné à un seul membre de l'équipe une formation plus poussée en matière de sécurité pour devenir l'ingénieur de sécurité de l'équipe. J'ai fait ça et j'ai adoré.

Il y a environ un an et demi, j'ai franchi le pas et obtenu un logiciel de détection d'intrusion pour la création d'emplois et j'adore ça. La plupart de mon travail est un codage standard, mais j'applique régulièrement mes connaissances en matière de sécurité de diverses manières.

Je suppose que mon point long est de continuer à apprendre. Vous le faites de la bonne façon en apprenant différentes technologies. Consultez mon blog https://www.DotNetRussell.com et vous pouvez voir les projets que j'ai réalisés qui m'ont conduit là où j'en suis maintenant.

Continue d'apprendre. Comme mentionné dans les commentaires, la sécurité est difficile. C'est pourquoi il y a une telle demande! Il est vraiment rare que cela arrive facilement aux gens. Les gens que vous voyez qui sont des experts dans le domaine sont là parce qu'ils ont passé des années et des années à affûter ces connaissances.

50
Anthony Russell

La rétro-ingénierie est amusante. J'utilise IDA une fois toutes les deux semaines, donc je ne suis pas un expert dans le domaine mais je le fais assez souvent. Si vous voulez comprendre l'ingénierie inverse, vous devez d'abord savoir comment procéder.

Si vous le faites professionnellement, vous passez votre temps dans Windows Land. Donc, pour vous familiariser avec cela, apprenez quelques éléments internes de Windows, codez certains projets en C # et C pour Windows.

Les meilleurs ingénieurs inverses que je connaisse ont d'abord été les ingénieurs logiciels.

Construisez vous-même certains programmes et utilisez Radare2 et IDA dessus et vous commencerez à apprendre.

Bonne chance et amusez-vous bien!

11
Joe M

Arrêtez de perdre votre temps avec des livres et des vidéos. Obtenez un programme que vous souhaitez inverser (comme un jeu que vous souhaitez pirater), obtenez vos outils d'analyse statique/dynamique (le moteur de triche est idéal pour démarrer si vous êtes sur Windows) et commencez à le bricoler ... googler tout vous ne savez pas encore dès que vous le trouvez. Cela sera lent et douloureux au début, mais bientôt vous comprendrez le code de l'assemblage en regardant simplement, cela devient une seconde nature.

2
Icaro10100